int isPrime(int n){
int i
for (i=2i<ni++)
{
if (n%i==0) return 0
}
return 1
}
int main(){
int i,n
printf("请输入一个正整数:")
scanf("%d",&n)
for(i=2i<=ni++){
if(isPrime(i)==1 && isPrime(i+2)==1){
printf("%d和%d是孪生素数\n",i,i+2)
}
}
return 0
}
楼主的两个for循环用的不对,另外整个流程也是有问题的。改正的代码如下:
#include <stdio.h>#include <math.h>
int main()
{
int a,b /* 输入的两个数据范围 */
int i,j,k
int num=0, s /* 素数个数, 素数标志 */
scanf( "%d %d", &a,&b )
for( i=ai+2<=bi++ )
{
s = 1 /* 先假设i是素数 */
k = sqrt(i)
for( j=2j<=kj++ )
{
if( i%j == 0 )
{
s = 0 /* i不是素数 */
break
}
}
if( s )
{
k = sqrt( i+2 )
for( j=2j<=kj++ )
{
if( (i+2)%j == 0 )
{
s = 0 /* i+2不是素数 */
break
}
}
if( s )
{
++num /* i+2是素数 */
printf( "第%d个孪生素数[%d,%d]\n", num, i, i+2 )
}
}
}
return 0
}
二、用GCC编译测试结果: