焦糖橙子 发表于 2021-7-25 11:19:36

S1E15求10000以内素数问题

#include<stdio.h>

int main()//求 10000 以内的素数个数。
{
        int i = 10000, sum = 0;
        _Bool flag = 1;


        while (i > 1)
        {
                int k = (int)sqrt((double)i);
                for (int j = 2; j < k; j++)
                {
                        if (i % j == 0)
                        {
                                flag = 0;
                                break;
                        }
                }
                if (flag)
                {
                        sum++;
                }
                else
                {
                        flag = 1;
                }
                i--;
        }
        printf("10000以内共有%d个素数!\n", sum);




        return 0;
}
正确答案应该是1229个,这为什么多了几个{:10_243:}

万千只cnm 发表于 2021-7-25 11:48:20

double k = (double) sqrt(i);
                for (int j = 2; j <= k; j++)

焦糖橙子 发表于 2021-7-25 17:52:29

万千只cnm 发表于 2021-7-25 11:48


#include <stdio.h>
#include <math.h>

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

      for (i = 9; i < 10000; i++)
      {
                k = (int)sqrt((double)i);

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

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

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

      return 0;
}

小甲鱼用的是int型的,为什么他的程序跑出来是正确的值啊?

焦糖橙子 发表于 2021-7-25 18:04:04

万千只cnm 发表于 2021-7-25 11:48


{:10_284:}我突然看到了,应该是小于等于。
页: [1]
查看完整版本: S1E15求10000以内素数问题