求C语言输出1000对孪生素数的程序,程序对每个数只检验一次?

C语言 程序
2025-04-06 06:05:34
推荐回答(1个)
回答1:

#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的所有整数进行判断。

扩展资料:

素数定理说明了素数在趋于无穷大时变得稀少的趋势。而孪生素数,与素数一样,也有相同的趋势,并且这种趋势比素数更为明显。

由于孪生素数猜想的高知名度以及它与哥德巴赫猜想的联系,因此不断有学术共同体外的数学爱好者试图证明它。有些人声称已经证明了孪生素数猜想。然而,尚未出现能够通过专业数学工作者审视的证明。

参考资料来源:百度百科-孪生素数