鱼C论坛

 找回密码
 立即注册
查看: 1747|回复: 2

课后作业S1E15动动手第二题~

[复制链接]
发表于 2022-3-26 22:30:51 | 显示全部楼层 |阅读模式
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;
                        }
                }

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

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

        return 0;
}
C语言作业
请问一下~为什么这里不写else的话,循环好像就直接结束了,是为什么呀,是因为flag = 0了吗

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-26 22:37:47 | 显示全部楼层
flag的意思是默认 i 是素数,经过一个判断如果不是素数就把flag置为0,这肯定每次都要重新初始化flag的,不然后面的素数也会因为flag是0而不count++
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-27 09:36:04 | 显示全部楼层
本帖最后由 gandixiwang 于 2022-3-27 09:39 编辑

是的,但是如果你这样写
#include <stdio.h>

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

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

                 if (flag)
                 {
                         count++;
                 }
         }

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

         return 0;
 }
就可以不用写else了
就是把flag变量写进循环里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 02:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表