for(j=2;j<=i;j++)
{
if(i%j==0)
break;
}
if(j==i)
{
a[x]=i;
x++;
}
这段代码,你不感觉无论是哪一个数,都会被记录下来,最后输出吗?
后面改成if(j!=i)//保证不是因为除以自身而跳出上面寻个循环的
{
a[x]=i;
x++;
}
除了1和自身之外没有其它正整数因子的正整数称为素数,也就是不用试1和自身
for(j=2; j<=i; j++)改为 for(j=2; j如果数很大这样还是比较低效的,最多试到i的平方根即可
最后的输出循环有点问题
for (int i = 0; i < x; i++)
printf("%d", a[i]);
因为你上边已经x++,你如果判断条件里写成 for (int i = 0; i <= x; i ++)
程序是要崩的。
for(j=2;j<=i;j++) 改成 for(j=2;j
不然for(j=2;j<=i;j++)结束j = i+1;永远满足不了后面的if(j == i)也就是无论你怎么输入,都不会数据出来!
把for(i=0;i<=x;i++)改为for(i=0;i