#include "stdio.h"
int prime(int n){//素数
int i;
for(i=3;i*i<=n;i+=2)
duif(!(n%i))
return 0;
return 1;
}
int main(int argc,char *argv[]){
int n,k;
for(k=0,n=3;k<1000;n+=2)
if(prime(n) && prime(n+2))
printf(++k%7 ? "%6d/%-6d " : "%6d/%-6d\n",n,n+2);
if(k%7)
printf("\n");
return 0;
}
当i==3时,(temp=(int)(sqrt(i)))==1
因为temp==1了,所以for(int j=2;j<=temp;++j)的循环就直接“跳过”了,也就不会执行循环体内的程序解决办法是将for(int j=2;……)改为for(int j=1;……)将循环体内的if(i%j==0)改为if(j!=1 && i%j==0)更简单的办法是不利用平方根求素数的捷径,而是直接对小于i的所有整数进行判断。
扩展资料:
素数定理说明了素数在趋于无穷大时变得稀少的趋势。而孪生素数,与素数一样,也有相同的趋势,并且这种趋势比素数更为明显。
由于孪生素数猜想的高知名度以及它与哥德巴赫猜想的联系,因此不断有学术共同体外的数学爱好者试图证明它。有些人声称已经证明了孪生素数猜想。然而,尚未出现能够通过专业数学工作者审视的证明。
参考资料来源:百度百科-孪生素数