赵嘉琦 发表于 2020-6-11 20:15:36

这句内循环 for (j = 2; j < i / 2; j++) ,求大神 解释一下 ,没看懂

#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;
}

赵嘉琦 发表于 2020-6-11 20:35:32

诶 这个帖居然删不掉,我貌似已经搞懂了{:10_249:}{:10_249:}

chxchxkkk 发表于 2020-6-11 23:41:25

懂了好,看看还能得分不

soupman 发表于 2020-6-12 00:02:10

改进一下: for(int j=2;j<=sqrt(i);j++)

魏睿超 发表于 2020-6-12 07:59:41

。。。

魏睿超 发表于 2020-6-12 08:00:12

你懂了?

梦想灬远帆 发表于 2020-6-12 09:53:25

自己弄懂是最好的

路θ甲 发表于 2020-6-12 10:25:11

{:10_257:}哦吼

iamneil 发表于 2020-6-12 10:40:26

能得分?

405794672 发表于 2020-6-12 21:15:32

这代码谁写的?他可能搞错了。不是i/2,而是根号i。意思是,只需要除到开根,余数不为0就可以判定为素数了。不是除以2。当然,也可以除以2,电脑多做些功而已。还有更厉害的,直接除到i本身。

赵嘉琦 发表于 2020-6-13 15:43:10

chxchxkkk 发表于 2020-6-11 23:41
懂了好,看看还能得分不

必须滴, 不差分

赵嘉琦 发表于 2020-6-13 15:44:19

soupman 发表于 2020-6-12 00:02
改进一下: for(int j=2;j

棒诶

赵嘉琦 发表于 2020-6-13 15:44:56

魏睿超 发表于 2020-6-12 07:59
。。。

{:5_97:}

赵嘉琦 发表于 2020-6-13 15:45:29

魏睿超 发表于 2020-6-12 08:00
你懂了?

懂了懂了

赵嘉琦 发表于 2020-6-13 15:46:04

梦想灬远帆 发表于 2020-6-12 09:53
自己弄懂是最好的

自己弄懂 快乐无穷
页: [1]
查看完整版本: 这句内循环 for (j = 2; j < i / 2; j++) ,求大神 解释一下 ,没看懂