18649448973 发表于 2023-3-31 19:26

查找范围内的素数

#incliude <stdio.h>
void test6();
int main(){
      test6();
      return 0;
      }
void test6(){
printf("\n==================================测试6.1==================================\n");

    unsigned long xx = 2, n = 2, sign = 0, count = 1;
    do {
      sign = 0;//标志=0
      for (n = 2; n < xx; n++) {//厉遍所有2到xx-1,即除1和自身外不能被其他整除的数
            if (xx % n == 0) {//xx与n求余,厉遍所有n能整除xx的数
                sign++;//能整除sign标志+1
                break;//退出循环
            }
      }
      
      if (!sign)//判断标志是否=0,这个数是整数,count计数+1
            printf("%d", count++);
      xx++;
      // if(count%4==0)printf("\n");
    } while (xx <= 1000);//3到10000的素数
    printf("\n==============%d以内共有%d个素数==============\n", 10000, count);
}

kkkttt 发表于 2023-3-31 21:01

长知识了。

ognice 发表于 2023-3-31 23:33

用二分法求素数应该是最简便的了

18649448973 发表于 2023-4-1 17:36

sunicelb 发表于 2023-3-31 20:17
这段代码已经能够完成其功能,但是还有一些可以进行优化的地方:

在循环中,如果一个数能被2整除,那么 ...

哇哦,学到了

18649448973 发表于 2023-4-7 11:12

sunicelb 发表于 2023-3-31 20:17
这段代码已经能够完成其功能,但是还有一些可以进行优化的地方:

在循环中,如果一个数能被2整除,那么 ...

感谢大佬修改

逝水静流 发表于 2023-4-7 13:57

sunicelb 发表于 2023-3-31 20:17
这段代码已经能够完成其功能,但是还有一些可以进行优化的地方:

在循环中,如果一个数能被2整除,那么 ...

这个思路,牛的

ingsston 发表于 2023-8-7 19:45

好像不用n到xx-1,只要除以xx的一半,

ingsston 发表于 2023-8-7 19:47

ingsston 发表于 2023-8-7 19:45
好像不用n到xx-1,只要除以xx的一半,

说错了,不是除以是求余(不想删回复{:1_918:})

TinaZerotwo 发表于 2023-8-8 09:40

主函数main,虽然这两个函数都不需要参数传递,但最好在函数声明中明确指定没有参数。

nanaqilin 发表于 2023-8-9 08:49

ognice 发表于 2023-3-31 23:33
用二分法求素数应该是最简便的了

对的,但是不是最快的算法,这个算法做ACM应该会超时的
页: [1] 2
查看完整版本: 查找范围内的素数