for循环开始时,需要加n=0,以及i=2
另外i++要放到if(x%i==0)这个代码块后面,不能放在里面啊,不然i就一直不变了
int main()
{
int n=0;
int i=2;
int x;
for(x=2;x<=100;x++)
{
n=0;
i=2;
while(i<x)
{
if(x%i==0)
{
n=1;
break;
}
i++;
}
if(n==0)
printf("%d ",x);
}
return 0;
}
#include<stdio.h>
int isprime(int x)
{
for(int j=2;j<=x/j;j++)
{
if(x%j==0)
{
return 0;
}
}
return 1;
}
int main()
{
for(int i=2;i<=100;i++)
{
if(isprime(i))
{
printf("%d ",i);
}
}
return 0;
}
#include <stdio.h>
int main()
{
//int n=0;
int x=2;
for(x=2;x<=100;x++)
{
int i=2;
while (i<=x)
{
if(x%i==0)
{
break;
}
i++;
}
if(x==i)
{
printf("%d ",x);
}
}
return 0;
}
修改了一下代码!
详细注释,供参考:
#include <stdio.h>
int main()
{
int n, i, x;
for (x = 2; x <= 100; x++) { //外循环,让 x = 2 -- 100 之间每个数出现一次
i = 2; n = 0; // x 每变化一次,都让 i = 2, n = 0 作为初始值
while (i < x) { //内循环,对每一个 x ,找它的因子数,如果找到则把 n = 1,否则 n = 0.
if (x % i == 0) //寻找因子数时,从 i = 2 开始,一直到 i = x - 1 为止
{
n = 1;
break; //找到了 ,这里用 break 跳出while()循环
}
i++; // i 从 2 开始,如果不是因子数,自增一次为 3 ,再 if()判断一次,以此类推
}
if (n == 0)//如果 i = 2 --- x - 1 范围内没找到因子,判断这个 x 就是质数,打印输出。
printf("%d ", x);
}
return 0;
}