啊哈磊_编程从这里起步

标题: 挑战6 [打印本页]

作者: rosynirvana    时间: 2013-11-4 15:24
标题: 挑战6
不熟悉筛法可以在这道题目中练习一下筛法
不过对于一个特殊问题,代码可以更简单一些
例如,注意到sqrt(100) = 10,小于等于10的质数其实只有2, 3, 5,7四个
那么直接用这四个数字来筛就可以了,最后结果别忘了加上2, 3, 5, 7四个数字
  1. #include <stdio.h>

  2. int main()
  3. {
  4.   int i, j;
  5.   int sum = 0;
  6.   int div[] = {2, 3, 5 ,7};
  7.   char buf[101] = {1, 1, 0};
  8.   for(i=0; i!=4; ++i){
  9.     int d = div[i];
  10.     for(j=d; j<101; j+=d)
  11.       buf[j] = 1;
  12.   }
  13.   for(int i=2; i!=101; ++i)
  14.     if(buf[i] == 0)
  15.       sum += i;
  16.   printf("%d\n", sum+17);
  17.   return 0;
  18. }
复制代码





欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2