0
# 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 的所有数字?

4

2 回答 2

3

这里有两个错误。

  1. if (f=1)需要是if (f==1)或只是if (f)。记住,=是赋值;==是比较。
  2. 您需要在每次循环迭代结束时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;
}
质数直到 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
于 2013-07-19T19:54:39.587 回答
1

if(f=1)应该读if(f==1)。分配总是评估为真。

于 2013-07-19T19:48:51.117 回答