A1035. 素数之和

问题描述

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

import java.util.ArrayList;
import java.util.Scanner;

public class A1035 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scan=new Scanner(System.in);
        int n=scan.nextInt();
        int sum=fun(n);
        ArrayList<Integer> list=new ArrayList<Integer>();
        list.add(sum);
        while(n!=0) {
            n=scan.nextInt();
            if(n==0) {break;}
            list.add(fun(n));
        }
        for(int i=0;i<list.size();i++) {
            System.out.println(list.get(i));
        }
    }
    public static int fun(int n) {
        int sum=0;
        for(int i=1;i<=n;i++) {
            if(judge(i)) {
                sum+=i;
            }
        }
        return sum;
    }
    public static boolean judge(int n) {
        if(n==1) {
            return false;
        }
        if(n==2) {
            return true;
        }
        for(int i=2;i<=Math.sqrt(n);i++) {
            if(n%i==0) {
                return false;
            }
        }
        return true;
    }
}

 

posted @ 2018-02-06 18:06  henu小白  阅读(187)  评论(0编辑  收藏  举报