15029975132 发表于 2019-9-24 17:52:48

10000以内的素数

#include <stdio.h>

int main()
{
      int count = 2; // 已知2和3是素数
      int i, j;
      _Bool flag = 1;

      for (i = 5; i < 10000; i++)
      {
                for (j = 2; j < i / 2; j++)
                {
                        if (i % j == 0)
                        {
                              flag = 0;
                              break;
                        }
                }

                if (flag)
                {
                        count++;
                }
                else
                {
                        flag = 1;
                }
      }

      printf("10000以内共有%d个素数!\n", count);

      return 0;
}



if语句和else语句我没有看懂,求助老师同学帮忙注释一下,谢谢

lh1996 发表于 2019-9-24 17:52:49

本帖最后由 lh1996 于 2019-9-24 20:30 编辑

进入for循环以后,如果求模得0,不是素数,flag置为0,跳出循环,进入下边的else语句,再将flag置为1,再次进入循环。如果求模不等0,不进入for循环,根据上次的flag为1,进入if(flag)count++。最后count就计算出多少个素数了。就是这样的。

15029975132 发表于 2019-9-24 22:10:17

lh1996 发表于 2019-9-24 20:28
进入for循环以后,如果求模得0,不是素数,flag置为0,跳出循环,进入下边的else语句,再将flag置为1,再次 ...

#include <stdio.h>

int main()
{
      int count = 2; // 已知2和3是素数
      int i, j;
      _Bool flag = 1;

      for (i = 5; i < 10000; i++)
      {
                for (j = 2; j < i / 2; j++)
                {
                        if (i % j == 0)
                        {
                              flag = 0;
                              break; //i不是素数,flag为假,跳出循环
                        }
                }

                if (flag)//若为真,素数个数加一
                {
                        count++;
                }
                else//否则,flag=1???
                {
                        flag = 1;
                }
      }

      printf("10000以内共有%d个素数!\n", count);

      return 0;
}


真的愚钝,else这个语句还是没搞懂逻辑关系

lh1996 发表于 2019-9-25 09:32:33

15029975132 发表于 2019-9-24 22:10
#include

int main()


循环语句的flag的真假是进入下面的if 语句的判断条件{:5_108:}兄弟再想想

15029975132 发表于 2019-9-25 16:19:00

lh1996 发表于 2019-9-25 09:32
循环语句的flag的真假是进入下面的if 语句的判断条件兄弟再想想

好的,谢谢师兄指教
页: [1]
查看完整版本: 10000以内的素数