猪猪虾 发表于 2020-6-20 11:54:32

C语言15讲,求10000以内的素数

本帖最后由 猪猪虾 于 2020-6-20 11:55 编辑

我的结果比答案少2个。。。答案是1229

#include <stdio.h>

// 求 10000 以内的素数个数
int main()
{
        int i,num = 1,total_su_num = 0;
        do
        {
                num++;
                //一个一个的进行判断
          for(i=2;i<=(num/2);i++)
          {
                  if ((num % i) == 0)
                  {
                          break;
                }       
                else if (i == (num/2))//判断是否循环一直进行到底,若到底了,说明中途没有Break
                {
                        total_su_num += 1;       
                }
                          
          }               
        }while(num <= 10000);
        printf("10000以内共有%d个素数!",total_su_num);
    return 0;
}

永恒的蓝色梦想 发表于 2020-6-20 12:15:12

本帖最后由 永恒的蓝色梦想 于 2020-6-20 12:16 编辑

#include<stdio.h>
#define MAX 10000
unsigned short result = 1, i, j, k;
bool primes;


int main() {
    for (i = 3; i < MAX; i += 2) {
      if (!primes) {
            ++result;
            k = i << 1;

            for (j = i + k; j < MAX; j += k) {
                primes = true;
            }
      }
    }

    printf("%u", result);
    return 0;
}

猪猪虾 发表于 2020-6-20 12:18:04

永恒的蓝色梦想 发表于 2020-6-20 12:15


我的为啥少2个数啊

qiuyouzhi 发表于 2020-6-20 12:27:18

永恒的蓝色梦想 发表于 2020-6-20 12:15


unsigned short..
不走正道{:10_256:}

永恒的蓝色梦想 发表于 2020-6-20 12:30:49

猪猪虾 发表于 2020-6-20 12:18
我的为啥少2个数啊

自己打印一下就能看出来了。
当 num = 2 或 num = 3 时,循环根本不会执行,所以他们被判定为非质数了。

永恒的蓝色梦想 发表于 2020-6-20 12:31:27

qiuyouzhi 发表于 2020-6-20 12:27
unsigned short..
不走正道

{:10_277:}我的个人习惯,能省则省{:10_277:}有什么问题吗{:10_277:}
页: [1]
查看完整版本: C语言15讲,求10000以内的素数