问题链接:POJ3292 UVA11105 Semi-prime H-numbers。

问题简述:参见上述链接。

问题分析

H-number:4n+1的数,n>=0,例如1,5,9,13,17,21,......。

H-prime:H-number数并且其因子只有1和它本身。

H-semi-prime:两个H-prime的乘积。

H-composite:其他H-number数。

需要注意的一点是,两个H-number的乘积=(4n+1)*(4m+1)=4*4m*n+4n+4m+1是一个H-number数。

这个问题是对于输入的h,求1-h之间H-semi-prime数的数量。

根据筛选法的原理进行筛选,先筛选出H-semi-prime,再做一下统计计算。

程序说明

数组h_number[],若h_number[i]=0表示i为H-prime,h_number[i]=1表示i为H-semi-primes,h_number[i]=-1表示i为H-composite。

统计处理后,h_number[i]=k表示1-i中有k个H-semi-primes。

AC的C++语言程序如下:

/* POJ3292 UVA11105 Semi-prime H-numbers */#include <iostream>
#include <cstring>using namespace std;const int MAX_H_NUMBER = 1000001;
int h_number[MAX_H_NUMBER + 1];     //h_number[i]=0表示i为H-primevoid maketable(int n)
{memset(h_number, 0, sizeof(h_number));for(int i=5; i<=n; i+=4)for(int j=5; j<=n; j+=4) {int product = i * j;if(product > n)break;if(h_number[i] == 0 && h_number[j] == 0)h_number[product] = 1;      // product为H-semi-primeselseh_number[product] = -1;     // product为H-composite}// 统计H-primeint hpcount = 0;for(int i=1; i<=n; i++) {if(h_number[i] == 1)hpcount++;h_number[i] = hpcount;  // 1-i有hpcount个H-prime}
}int main()
{int h;maketable(MAX_H_NUMBER);while(cin >> h && h)cout << h << " " << h_number[h] << endl;return 0;
}

POJ3292 UVA11105 Semi-prime H-numbers【筛法打表】相关推荐

  1. P1217 [USACO1.5]回文质数 Prime Palindromes(素数筛法/打表)

    P1217 [USACO1.5]回文质数 Prime Palindromes(素数筛法/打表) 一:埃氏筛(时间复杂度--nloglogn) 重点:一个数x是合数,则它的倍数也是合数 //用埃氏筛生成 ...

  2. POJ 3126 Prime Path(筛法,双向搜索)

    题意:一个4位的素数每次变动一个数位,中间过程也要上素数,问变成另一个的最小步数. 线性筛一遍以后bfs就好.我写的双向,其实没有必要. #include<cstdio> #include ...

  3. Codeforces 359D Pair of Numbers | 二分+ST表+gcd

    题面: 给一个序列,求最长的合法区间,合法被定义为这个序列的gcd=区间最小值 输出最长合法区间个数,r-l长度 接下来输出每个合法区间的左端点 题解: 由于区间gcd满足单调性,所以我们可以二分区间 ...

  4. 河南省第十届大学生程序设计竞赛 A,B,C,D,F,G,H 题解

    H: Intelligent Parking Building 时间限制: 1 Sec  内存限制: 128 MB 提交: 22  解决: 20 [提交][状态][讨论版] 题目描述 There is ...

  5. 【CodeForces - 271B 】Prime Matrix (素数,预处理打表,思维)

    题干: You've got an n × m matrix. The matrix consists of integers. In one move, you can apply a single ...

  6. C语言从入门到精通 【精读C Prime Plus】【C语言笔记1-4章节】【更新中~】

    知识来源[C Prime Plus 第六版][互联网] 目录 前言 一.初识C语言 C语言的特点及关键词 编译器 C语言编程的基本策略: 二.简单C程序示例概述 三.数据和C (一些基础知识) 变量和 ...

  7. 洛谷 P1217 [USACO1.5]回文质数 Prime Palindromes 题解 C/C++

    知识点: 回文数有两种 一种是单数位数,abcba,一种是双数位数,abccba 而双数位数是质数的只有11,即偶位回文数全不是质数除了11:所以不需要枚举到1亿,到1千万就好了 以下几种方法供参考 ...

  8. UVA 516 Prime Land

    UVA516 感觉自己的思维不够灵动变通...特别是写了最近的几道题目之后...感觉得做出加倍努力不然真的就学不进去了..我太难了. #include <iostream> #includ ...

  9. Codeforces H. Ancient Wisdom

    题目链接:https://codeforces.com/gym/102365/problem/H H. Ancient Wisdom David and Aram had the following ...

最新文章

  1. 用Android写代码,用css写个android机器人代码分享
  2. 数学建模学习笔记——时间序列分析
  3. java中nonce_java如何获取微信timestamp,nonceStr,signature参数
  4. android datebinding学习
  5. Win7的常用快捷键以及设置
  6. 2017计算机办公自动化试题,2017年计算机考试办公自动化试题及答案
  7. Java新手入门值得看的五本书!
  8. matlab中garchred是什么意思,garch模型matlab
  9. java建立_java建立一个类
  10. 静默安装oracle11g单实例-腾讯云
  11. Win10自动修复无法开机【完美解决】
  12. mysql定时任务,把7天的数据存到历史表,再删除7天前的数据
  13. js插入浏览器实现自动点击按钮
  14. jira7.2安装、中文及破解
  15. POJ 1723 士兵排队 C语言实现
  16. 安徽大学第九届大学生程序设计竞赛 网络预选赛
  17. 上海亚商投顾:三大指数小幅调整 消费电子概念股全线走强
  18. Java数字签名校验
  19. HDU 4533 威威猫系列故事――晒被子(线段树区间更新+分情况推公式)
  20. 坎蒂雷赋权法 matlab,多重网格法求解雷诺方程的MATLAB编程

热门文章

  1. 第一段VBA脚本留念
  2. 在Visual C#中用ListView显示数据记录
  3. MFC 教程【6_应用程序的退出 】
  4. 半导体八大工艺流程图_深度研究——半导体之光刻胶,看五大龙头谁能迈出国产化第一步?...
  5. arcgis支持python3吗_常见问题解答:ArcGIS 中使用的 Python 是什么版本?
  6. php黑名单绕过,利用最新Apache解析漏洞(CVE-2017-15715)绕过上传黑名单
  7. linux中使用Vsftpd+nginx 搭建文件服务器
  8. MySQL 字段类型解析
  9. 深入了解vue中slot和slot-scope
  10. php ajax post请求数据变形,php-在AJAX调用中读取POST数据