C语言:相求1-100内的素数,用while语句得出结果不对
首先,最外面的循环最后的break去掉,应该能解决你的问题。
当时每次比较2-100其实效率不是很好,我这里简单写了个,你参考下:
```c
#include <stdio.h>
int main()
{
int is_prime = 0;
int prime[100] = {0};
prime[0] = 2;
int prime_idx = 1;
int x = 3;
while(x <= 100) {
int i = 0;
is_prime = 1;
while(prime[i]) {
if (x % prime[i++] == 0) {
is_prime = 0;
break;
}
}
if (is_prime) {
prime[prime_idx++] = x;
printf("new prime: %d\n", x);
}
x++;
}
return 0;
}
如果还有其他问题,欢迎私信交流~~~
如果觉得答案符合你的要求,别忘记采纳哦~~~~
#include"stdio.h"
int main()
{
int i,j;
for(i=1;i<=200;i++)// 枚举 1~200之间的数
{
int f=1;// f 标记是否为素数 1表示是素数 0表示不是素数
for(j=2;j<i;j++) // 枚举 [2,n-1] 2 3 4 5 6 7 8 ---- n-1
{
if(i%j==0)
f=0;
}
if(f==1)
printf("%d ",i);
}
return 0;
}