解决关键性问题
#include"stdio.h"
int cnt,sum;
int b[100];
void sp()
{
int i,j;
for(i=100;i<1000;i++)
{
for(j=2;j<i;j++)
if(i%j==0) /*如果能整除,说明i不是素数,退出循环*/
break;
if(j==i&&((i%10+i/10%10)%10==i/100)) /*如果j==i,则i是素数,然后判断i是否满足条件*/
{
b[cnt++]=i; /*将满足条件的i存入数组b中*/
cnt++; /*满足条件的素数个数加1*/
sum+=i; /*满足条件的素数求和*/
}
}
}
void main()
{
int i;
cnt=sum=0;
sp();
printf("cnt=%d\n",cnt);
printf("sum=%d\n",sum);
for(i=0;i<cnt;i++)
{
if(i%6==0)
printf("\n");
printf("%d\t",b[i]);
}
}
运行结果是:
cnt=30
sum=6825
101 0 211 0 239 0
257 0 293 0 349 0
367 0 431 0 523 0
541 0 569 0 587 0
743 0 761 0 853 0 Press any key to continue
看到结果了吧?出现0了,一看就知道错了,错在哪里了?还有一个问题
即if(j==i&&((i%10+i/10%10)%10==i/100)) /*如果j==i,则i是素数,然后判断i是否满足条件*/
它的前提条件是for(j=2;j<i;j++),既然j<i,它可能出现j==i吗?