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

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

#include "stdio.h"

int prime(int n){//素数

int i

for(i=3i*i<=ni+=2)

duif(!(n%i))

return 0

return 1

}

int main(int argc,char *argv[]){

int n,k

for(k=0,n=3k<1000n+=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=2j<=temp++j)的循环就直接“跳过”了,也就不会执行循环体内的程序解决办法是将for(int j=2……)改为for(int j=1……)将循环体内的if(i%j==0)改为if(j!=1 &&i%j==0)更简单的办法是不利用平方根求素数的捷径,而是直接对小于i的所有整数进行判断。

扩展资料:

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

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

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

#include<stdio.h>

void main() { int i,j,k,a,b,n

a=2n=0i=2

while ( n<10 ) {

  i++for ( j=2,b=1j<=i/2j++ ) if ( i%j==0 ) { b=0break}

  if ( b ) {

    if ( i-a==2 ) { printf("%d %d\n",a,i)n++}

    a=i

  }

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12078761.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存