不熟悉筛法可以在这道题目中练习一下筛法
不过对于一个特殊问题,代码可以更简单一些
例如,注意到sqrt(100) = 10,小于等于10的质数其实只有2, 3, 5,7四个
那么直接用这四个数字来筛就可以了,最后结果别忘了加上2, 3, 5, 7四个数字- #include <stdio.h>
- int main()
- {
- int i, j;
- int sum = 0;
- int div[] = {2, 3, 5 ,7};
- char buf[101] = {1, 1, 0};
- for(i=0; i!=4; ++i){
- int d = div[i];
- for(j=d; j<101; j+=d)
- buf[j] = 1;
- }
- for(int i=2; i!=101; ++i)
- if(buf[i] == 0)
- sum += i;
- printf("%d\n", sum+17);
- return 0;
- }
复制代码 |