# include <stdio.h>
int main()
{
int i,p,f=1;
printf("Prime Numbers till 99: \n");
for (p=2;p<99;p++)
{
for (i=2;i<p;i++)
if(p%i==0)
{
f=0;
break;
}
if(f=1)
printf("%d ",p);
}
return 0;
}
为什么我没有得到素数而是将所有数字从2增加到98?
答案 0 :(得分:3)
这里有两个错误。
if (f=1)
需要if (f==1)
或if (f)
。请记住,=
是作业; ==
是比较。f
设置回1
。在首次输入最内层f
- 语句后,0
将永远为if
,并且只打印第一个素数。int main() {
int i, p, f = 1;
printf("Prime Numbers till 99: \n");
for (p = 2; p < 99; p++) {
for (i = 2; i < p; i++) {
if (p%i == 0) {
f = 0;
break;
}
}
if (f) { // here
printf("%d ", p);
}
f = 1; // and here
}
return 0;
}
Prime Numbers till 99: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
答案 1 :(得分:1)
if(f=1)
应该阅读if(f==1)
。赋值总是评估为真。