楼主的两个for循环用的不对,另外整个流程也是有问题的。改正的代码如下:
#include
#include
int main()
{
int a,b; /* 输入的两个数据范围 */
int i,j,k;
int num=0, s; /* 素数个数, 素数标志 */
scanf( "%d %d", &a,&b );
for( i=a;i+2<=b;i++ )
{
s = 1; /* 先假设i是素数 */
k = sqrt(i);
for( j=2;j<=k;j++ )
{
if( i%j == 0 )
{
s = 0; /* i不是素数 */
break;
}
}
if( s )
{
k = sqrt( i+2 );
for( j=2;j<=k;j++ )
{
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编译测试结果: