在C中寻找从1到300的素数
我用C语言键入了以下程序:在C中寻找从1到300的素数,c,primes,C,Primes,我用C语言键入了以下程序: #include <stdio.h> int main () { int i = 1, a = 2; while (i <= 300) { while (a < i) { if (i % a == 0) break; else printf ("%d\n", i);
#include <stdio.h>
int main ()
{
int i = 1, a = 2;
while (i <= 300)
{
while (a < i)
{
if (i % a == 0)
break;
else
printf ("%d\n", i);
a++;
}
i++;
}
return 0;
}
#包括
int main()
{
int i=1,a=2;
而(i在进入循环之前,您需要将a设置回2:
#include <stdio.h>
int main ()
{
int i = 1, a = 2;
while (i <= 300)
{
a = 2; // add this line
while (a < i)
{
if (i % a == 0)
break;
else
printf ("%d\n", i);
a++;
}
i++;
}
return 0;
}
#包括
int main()
{
int i=1,a=2;
(i除了您没有将a
重置为2之外,printf()
语句的位置不正确。这将打印不能被2除的i
的任何数目(即使它可以被另一个数除)
按如下方式更改代码:
#include <stdio.h>
int main ()
{
int i = 1, a = 2, is_prime;
while (i <= 300)
{
is_prime = 1;
while (a < i)
{
if (i % a == 0) {
is_prime = 0;
break;
}
a++;
}
if(is_prime)
printf ("%d\n", i);
a = 2;
i++;
}
return 0;
}
#包括
int main()
{
int i=1,a=2,是_素数;
while(我将每个数字的a
重置为2,包含所有警告和调试信息(例如gcc-Wall-g
,如果使用)。现在学习如何使用调试器(例如Linux上的gdb
);这是一项在你的编程生涯中都很有用的技能。此外,每当你发现一个非除数时打印数字也是错误的。inti=1,a=2;
现在不需要将值2
赋给a
。这个答案解决了第一个问题,但正如博洛夫在上面的评论中提到的,你应该打印i
>仅当无a
小于i
除以i
,而不是i
的每个非除数时,否则任何奇数将至少显示一次。