#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
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)