本文共 1285 字,大约阅读时间需要 4 分钟。
114
4
/********************************* * 日期:2013-3-14 * 作者:SJF0115 * 题号: 南阳理工 题目26: 孪生素数问题 * 来源:http://acm.nyist.net/JudgeOnline/problem.php?pid=26 * 结果:AC * 来源: * 总结: **********************************/#include#include int prime[1000001];//素数表int Primes(int n){ int i,j; for(i = 1;i <= n;i++){ //偶数 if(i % 2 == 0){ prime[i] = 0; } //奇数 else{ prime[i] = 1; } } //奇数的倍数肯定不是素数 for(i = 3;i <= sqrt(n);i+=2){ if(prime[i]){ for(j = i+i;j <= n;j += i){ prime[j] = 0; } } } return 0;} int main(){ int N,M,count,i; while(scanf("%d",&N) != EOF){ while(N--){ count = 0; scanf("%d",&M); //求素书 Primes(M); //求孪生素数 for(i = 2;i <= M-2;i++){ if(prime[i] && prime[i+2]){ count++; //printf("%d %d\n",i,i+2); } } //两个素数相邻为1的也成为孪生素数。这样的只有一种情况2,3 if(M >= 3){ count++; } printf("%d\n",count); } } return 0;}
注意:
接下来组测试数据给出m,表示找出m之前的所有孪生素数。
但实际上包括m这个数。
测试用例:
m = 7
孪生素数:
2,3
3,5
5,7
转载地址:http://dkcsi.baihongyu.com/