A1035. 素数之和

来源:互联网 发布:php 手机商城源码 编辑:程序博客网 时间:2024/05/16 09:46

问题描述
  给定正整数N,求[1,N]之间的所有素数之和.如果没有素数,则之和为0. 1<=N<=1000
输入格式
  输入有多行,每行有一个正整数n(1<=n<=1000),如果输入为0,则退出
输出格式
  对应每行输入的整数,输出[1,N]之间的所有素数之和.每个结果占一行.
样例输入
1
2
4
0
样例输出
0
2
5
思路:

       用了筛选法才通过。

代码:

#include <stdio.h>#include <math.h>int main(){    int i,j,a[1000],n,s=0;    while (scanf("%d",&n))    {        if (n==0)            break;        s=0;    a[0]=0;a[1]=0;a[2]=2;    //排除0和1    for (i=2;i<=n;i++)//数组赋值        a[i]=i;    for (i=2;i<=sqrt(n);i++)        if (a[i]!=0)//除去0和1            for (j=2*i;j<=n;j=j+i )//排除素数i的倍数                a[j]=0;            for (i=0;i<=n;i++)                if (a[i]!=0)                    s+=a[i];        printf("%d\n",s);    }   return 0;}


0 0