|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- main() {
- int a = 0, b = 0, c = 0;
- for (a = 2; a <= 10000; a++) {
- for (b = 2; b <= (a / 2); b++) {
- if (a % b != 0) {
- c += 1;
- }
- }
- }
- printf("10000以为一共有%d个素数\n", c);
- return 0;
- }
复制代码
本帖最后由 风车呼呼呼 于 2022-4-10 15:12 编辑
这完全是设计思路上的问题了。。。
我猜你的思路是:
10000以内的素数,那就用a遍历2~10000;
然后用b来从2开始遍历,记录下其中的素数;
我给你几个例子,你想想就知道问题有多大了
1.
a=7时,b<=(a/2)=3,当b=3时,a%b!=0,计数+1
a=8时,b<=(a/2)=4,当b=3时,a%b!=0,计数+1
(素数3被重复统计,同理后面每一个a(非3的倍数)都会统计一次素数3)
2.
很明显,4并不是一个素数
但在你的程序中
a=9时,b<=(a/2)=4,当b=4时,9%4!=0,计数+1
(除不尽就算作是素数,这明显离谱了)
|
|