zoukankan      html  css  js  c++  java
  • 南阳ACM 题目22:素数求和问题

    素数求和问题

    时间限制: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
    <span style="font-size:14px;">import java.util.Arrays;
    import java.util.Scanner;
    
    public class Main{	
    	private static void sushu(int[] num,int max){
    		int[] su=new int[max];
    		int t=0,sum=0;
    		su[t]=2;
    		for(int i=3;i<=max;i++){
    			int j;
    			for(j=0;j<=t;j++){
    				if(i%su[j]==0){
    					break;
    				}
    			}
    			if(j>t){
    				su[++t]=i;
    			}
    		}
    		int temp=0;
    		for(int i=0;i<num.length;i++){
    			int j=temp;
    			while(j<=t){
    				if(num[i]==su[j]){
    					sum+=num[i];
    					temp=j;   //这里要注意,数字可能有重复的,所以不能是j+1;
    					break;
    				}
    				j++;
    			}
    		}
    		System.out.println(sum);
    	}
    	public static void main(String[] args){
    		Scanner sc = new Scanner(System.in);
    		int N = sc.nextInt();
    		for(int i=0;i<N;i++){
    			int M = sc.nextInt();
    			int[] num = new int[M];
    			for(int j=0;j<M;j++){
    				num[j]=sc.nextInt();
    			}
    			Arrays.sort(num);
    			sushu(num,num[M-1]);
    		}
    	}
    }
    </span>
     
  • 相关阅读:
    Safari-IoS调试
    前端加密技术
    gulp入门
    xss攻击
    xml 解析
    python 基本语法
    python初识
    字节
    神奇的算式
    linux-虚拟机安装
  • 原文地址:https://www.cnblogs.com/molashaonian/p/7445893.html
Copyright © 2011-2022 走看看