C语言编写怎么输出100-300的素数

#include<stdio.h>
void main()
{
for(int i=100;i<=300;i++)
{
for(int j=2;j<i;j++)
{
if(i%j==0)
break;
else
printf("%4d",i);

}
}
}
为什么这么编是错的

你参考下,这是1000以内的:

#include <stdio.h>

#define NPRIMES 1000
#define FALSE 0
#define TRUE 1

int main(void) {
int n;
int i,j;
int flag;
int primes[NPRIMES]; // 保存比 n 小的素数
int level; // 当前素数的数目加1

printf("Enter value of N > ");
scanf("%d",&n);
level = 0;

for(i=2;i<=n;i++) {
for(j = 0, flag = TRUE; j<level && flag; j++)
flag = (i%primes[j]);
if (flag) { // i 是一个素数
printf("%12d\n", i);
if (level < NPRIMES)
primes[level++] = i;
}
}
}追问

我只想知道我为什么编的是错的

追答

你把printf("%4d",i);放在了内循环体里,会打印j-2次的。
正确的方法是:每个值判断时初始置素数标志为1,如果非素数,置标志为0,break。在循环外如果是1再打印即可。

温馨提示:答案为网友推荐,仅供参考
相似回答