HDU-ACM2098

分拆素数和

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 32266    Accepted Submission(s): 13947


Problem Description
把一个偶数拆成两个不同素数的和,有几种拆法呢?
 

Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
 

Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
 

Sample Input
   
   
   
   
30 26 0
 

Sample Output
   
   
   
   
3 2

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        while (input.hasNext()){
            int n=input.nextInt();
            if (n==0){
                return;
            }
            int c=0;
            int h=n/2;
            for (int i=2;i<h;i++){
                int j=n-i;
                if (isPrime(i)&&isPrime(j)){
                    c++;
                }
            }
            System.out.println(c);
        }
    }

    private static boolean isPrime(int i) {
        for (int j=2;j*j<=i;j++){
            if (i%j==0){
                return false;
            }
        }
        return true;
    }
}


你可能感兴趣的:(java,算法,编程语言,ACM,杭电)