C语言 for循环求1到100的所有素数并输出,我下面程序错在哪里?

# include <stdio.h>

int main (void)

{

int i;

int j;

for (i=1; i<101; ++i)

{

for (j=1; j<101; ++j)

if (j%i == 0)

break;

if (i == j)

printf ("i = %d\n", i);

}

return 0;

}

为什么输出结果是77到100?正确的写法是什么?

不是77到100,是1到100。1到76的数据,你鼠标滚动下就能看到。原来的代码 if (i==j) printf ("i = %d\n", i); 每次循环都必然被打印

/* 可以如下改动 */
#include <stdio.h>
int main (void)
{
int i;
int j;
int cnt = 0; /* 计算器,监控能被多少个数整除 */

for (i=1; i<101; i++)
    {
     cnt = 0; /* 每次循环前,置零 */
for (j=2; j<i; j++)

if (i%j == 0) 
{
cnt++; /*素数是只能被1和它自己整除,所以,在2~i-1之间,有被整除,就肯定不是素数*/
break; 
}
}
if (cnt == 0)
{
printf("%d\t", i);

}
printf("\n");

return 0;
}

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