水题记录

素数求和问题

时间限制:3000 ms  |  内存限制:65535 KB
难度:2
 
描述
现在给你N个数(0<N<1000),现在要求你写出一个程序,找出这N个数中的所有素数,并求和。
 
输入
第一行给出整数M(0<M<10)代表多少组测试数据
每组测试数据第一行给你N,代表该组测试数据的数量。
接下来的N个数为要测试的数据,每个数小于1000
输出
每组测试数据结果占一行,输出给出的测试数据的所有素数和
样例输入
3
5
1 2 3 4 5
8
11 12 13 14 15 16 17 18
10
21 22 23 24 25 26 27 28 29 30
样例输出
10
41
52

package Main;


import java.util.Scanner;

public class Main2 {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int num = input.nextInt();
        for (int i = 0;i<num;i++) {
            int n = input.nextInt();
            int [] array = new int[n];
            for (int j = 0;j<n;j++) {
                array[j] = input.nextInt();
            }
           
           int result =cal(array);
            System.out.println(result);
        }
        
    }

    private static int cal(int[] list) {
        int sum = 0;
        for (int i = 0;i<list.length;i++) {
            if (isPrime(list[i])) {
                
                sum += list[i];
            }
            
        }
        return sum;
    }

     public static boolean isPrime(int a) {  
          
            boolean flag = true;  
      
            if (a < 2) {// 素数不小于2  
                return false;  
            } else {  
      
                for (int i = 2; i <= Math.sqrt(a); i++) {  
      
                    if (a % i == 0) {// 若能被整除,则说明不是素数,返回false  
      
                        flag = false;  
                        break;// 跳出循环  
                    }  
                }  
            }  
            return flag;  
        }  
    
    
}
原文地址:https://www.cnblogs.com/airycode/p/5311739.html