1007. 素数对猜想 (20)
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N (< 105),请计算不超过N的满足猜想的素数对的个数。
输入格式:每个测试输入包含1个测试用例,给出正整数N。
输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。
输入样例:20输出样例:
4
解题思路:当n=1或者n=2时,直接输出0,当n=3时,注意1不是素数但题意“显然有 d1=1 且对于n>1有 dn 是偶数”,直接输出1,然后判断是否是素数,储存在一个数组,进行判断素数的对数
AC参考代码:
#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #include<math.h> using namespace std; int main() { int n; while(scanf("%d",&n)!=EOF) { int count; if(n==1||n==2) { printf("0\n"); continue; } if(n==3) { printf("1\n"); continue; } int r=0; int b[10000]; for(int i=4;i<=n;i++) { int j; for(j=2;j<=sqrt(i);j++) if(i%j==0) break; if(j>sqrt(i)) b[r++]=i; } /*for(int i=0;i<r;i++) printf("%d ",b[i]); printf("\n");*/ count=1; for(int i=1;i<r;) { if(b[i]-b[i-1]==2) { count++; i=i+2; } else i++; } printf("%d\n",count); } return 0; }