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: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:15
我的为啥少2个数啊 永恒的蓝色梦想 发表于 2020-6-20 12:15
unsigned short..
不走正道{:10_256:} 猪猪虾 发表于 2020-6-20 12:18
我的为啥少2个数啊
自己打印一下就能看出来了。
当 num = 2 或 num = 3 时,循环根本不会执行,所以他们被判定为非质数了。 qiuyouzhi 发表于 2020-6-20 12:27
unsigned short..
不走正道
{:10_277:}我的个人习惯,能省则省{:10_277:}有什么问题吗{:10_277:}
页:
[1]