POJ3292 UVA11105 Semi-prime H-numbers【筛法打表】
来源:互联网 发布:vmware虚拟机性能优化 编辑:程序博客网 时间:2024/06/05 05:12
问题链接: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-primes else h_number[product] = -1; // product为H-composite } // 统计H-prime int 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;}
阅读全文
0 0
- POJ3292 UVA11105 Semi-prime H-numbers【筛法打表】
- POJ3292 Semi-prime H-numbers
- POJ3292--Semi-prime H-numbers
- poj3292 Semi-prime H-numbers
- poj3292 Semi-prime H-numbers
- POJ3292 Semi-prime H-numbers
- poj3292 Semi-prime H-numbers
- poj3292 Semi-prime H-numbers
- [POJ3292]Semi-prime H-numbers
- POJ3292 Semi-prime H-numbers 素数筛选
- POJ3292——Semi-prime H-numbers
- POJ3292——Semi-prime H-numbers
- Semi-prime H-numbers poj3292 (类比欧拉筛)
- UVa11105 - Semi-prime H-numbers(sieve的思想)
- poj3292--Semi-prime H-numbers(数论篇2)
- poj3292——Semi-prime H-numbers(数论)
- Semi-prime H-number(poj3292)
- (POJ3292)Semi-prime H-numbers <素数筛法的变形>
- 手机混合 App与物联网平台开发
- 关于jvm优化问题
- 高性能分布式数据库TDSQL
- The SGPANEL procedure 过程的使用
- linux centos 命令行 安装 teamviewers ___yyw合并版
- POJ3292 UVA11105 Semi-prime H-numbers【筛法打表】
- 在NanoPi-NEO上用 ffserver+ffmpeg 实现USB摄像头视频监控
- 抓包工具 Charles 使用心得
- hdfljfl
- scala break & continue
- oracle 的一个大数据表 快速迁移到 Sqlserver2008数据库
- xx大学云数据中心建设方案
- xx大学云数据中心建设方案
- 记录