搜索
查看: 870|回复: 0
打印 上一主题 下一主题

挑战6

[复制链接]
跳转到指定楼层
楼主
发表于 2013-11-4 15:24:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不熟悉筛法可以在这道题目中练习一下筛法
不过对于一个特殊问题,代码可以更简单一些
例如,注意到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. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表