查找范围内的素数
#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);
} 长知识了。 用二分法求素数应该是最简便的了 sunicelb 发表于 2023-3-31 20:17
这段代码已经能够完成其功能,但是还有一些可以进行优化的地方:
在循环中,如果一个数能被2整除,那么 ...
哇哦,学到了 sunicelb 发表于 2023-3-31 20:17
这段代码已经能够完成其功能,但是还有一些可以进行优化的地方:
在循环中,如果一个数能被2整除,那么 ...
感谢大佬修改 sunicelb 发表于 2023-3-31 20:17
这段代码已经能够完成其功能,但是还有一些可以进行优化的地方:
在循环中,如果一个数能被2整除,那么 ...
这个思路,牛的 好像不用n到xx-1,只要除以xx的一半, ingsston 发表于 2023-8-7 19:45
好像不用n到xx-1,只要除以xx的一半,
说错了,不是除以是求余(不想删回复{:1_918:}) 主函数main,虽然这两个函数都不需要参数传递,但最好在函数声明中明确指定没有参数。 ognice 发表于 2023-3-31 23:33
用二分法求素数应该是最简便的了
对的,但是不是最快的算法,这个算法做ACM应该会超时的
页:
[1]
2