poj 3292 筛4n+1素数
来源:互联网 发布:java 弱引用 使用场景 编辑:程序博客网 时间:2024/05/18 02:19
题意:
给一个数h,求1-h之间的 4*n + 1 的素合数有多少。
素合数的定义是 两个 4*n+1的素数之间的积。
代码:
#include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <queue>#include <map>#include <climits>#include <cassert>#define LL long long#define lson lo, mi, rt << 1#define rson mi + 1, hi, rt << 1 | 1using namespace std;const int maxn = 1000001 + 10;const int inf = 0x3f3f3f3f;const double eps = 1e-8;const double pi = acos(-1.0);const double ee = exp(1.0);int cnt[maxn];int hNum[maxn];void primeTable(){ memset(hNum, 0, sizeof(hNum));//0 is h prime for (int i = 5; i <= maxn; i += 4) { for (int j = 5; j <= maxn; j += 4) { int mul = i * j; if (maxn < mul) break; if (!hNum[i] && !hNum[j]) hNum[mul] = 1;//1 is h semi prime else hNum[mul] = -1;//-1 is h composite } } int c = 0; for (int i = 1; i < maxn; i++) { if (hNum[i] == 1) c++; cnt[i] = c; }}int main(){#ifdef LOCAL freopen("in.txt", "r", stdin);#endif // LOCAL primeTable(); int h; while (~scanf("%d", &h) && h) { printf("%d %d\n", h, cnt[h]); } return 0;}
0 0
- poj 3292 筛4n+1素数
- 素数筛-筛出1到n的所有素数
- 【 51NOD 1434 素数筛 】【数论+思维+筛素数】区间LCM【找到一个最小整数M,满足M>N,LCM(N+1,N+2,..,M-1,M)是LCM(1,2,3,4,.,N-1,N) 的倍数】
- POJ 3292 数论 类似素数筛
- POJ 2689 筛素数
- poj 1411 筛素数
- POJ 1365 素数筛
- 1-n之间的素数
- 素数筛法筛选1~N之间的素数(高效)
- POJ 2689 素数筛法
- POJ 1595 素数筛法
- POJ 3126 - 筛素数+BFS
- 素数筛选法 (求1~n的素数)
- (Relax 数论1.11)POJ 1595 Prime Cuts(欧拉筛法: 输出1~n区间中中间的2C个素数)
- POJ - 3292 Semi-prime H-numbers(素数筛法)
- POJ 3292 Semi-prime H-numbers (仿素数筛)
- POJ 3292 Semi-prime H-numbers (类似素数筛)
- 筛素数 时间复杂度:O(N)
- opencv形状分析
- Online Judge System For SzNOI 题库 语法百题 C++ d006
- IOS开发之----常用宏定义和讲解
- libaio.so.1()(64bit) is needed by MySQL-server 问题解决访问
- 【C++】文件的读取与写入
- poj 3292 筛4n+1素数
- showModalDialog使用详解(IE4+ 支持)
- AFJSONRequestSerializer
- Shell: /dev/null 2>&1详解
- DNS服务及基于BIND的实现
- 表视图 TableView 的使用
- java中堆和堆栈的区别及实例
- 验证码的功能实现
- Android UI 之一步步教你自定义控件