POJ3006
来源:互联网 发布:域名icp备案查询 编辑:程序博客网 时间:2024/06/05 16:49
POJ3006 狄利克雷定理
狄利克雷定理:给定初始a与公差d,若a与d互素,则a,a+d,a+2d,a+3d,,,可以产生无限个素数。现在给定三个正数a,d,n,要求这个数列的第n个素数是多少?且知道所求的数小于1000000(一百万)。
输入:a<=9307,d<=346,n<=210
输出:求第n个素数
解:由所求的数小于1000000且给的测试数据中的d比较大,n比较小可以知道可以直接判断数列的每个数是不是素数就行。先用筛选法算出前1000000的所有素数,然后在从数列开始一一判断即可。注意1不是素数,标记的时候要小心。
代码:
#include<cstring>#include<cstdio>#include<cmath>usingnamespace std;const intmaxn=1000000;intvis[maxn];int main(){ memset(vis,0,sizeof(vis)); vis[1]=1; int m=(int)sqrt(maxn+0.5); for(int i=2;i<=m;i++)if(!vis[i]) { for(int j=i*i;j<=maxn;j+=i) { vis[j]=1; } } int a,d,n; while(scanf("%d%d%d",&a,&d,&n)==3&&a&&d&&n) { int cnt=0,p; while(1) { if(!vis[a]&&++cnt==n) { printf("%d\n",a); break; } a+=d; } } return 0;}
0 0
- poj3006
- poj3006
- poj3006
- poj3006
- poj3006
- POJ3006
- poj3006
- poj3006
- POJ3006
- POJ3006
- poj3006
- poj3006
- POJ3006
- poj3006
- poj3006
- poj3006 素数
- POJ3006 解题报告
- poj3006(素数筛法)
- BoundsChecker使用说明
- POJ2231
- POJ2371
- Linux文件误删除恢复操作
- POJ2388
- POJ3006
- POJ3094
- 菜鸟学Java(十六)——Jboss简介
- ipv6 ospf 1 area 0 instance 1的作用
- HDU3299
- linux系统下EXT2/EXT3/EXT4文件系统的数据恢复
- HomeBrew—Mac的利器
- 黑马程序员——多态,继承;抽象类
- 问题记录