#第二周1000题解#

来源:互联网 发布:2016淘宝客还能赚钱吗 编辑:程序博客网 时间:2024/05/21 07:08

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

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

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

Sample Input

30
26
0

Sample Output

3
2

写了一个判断素数的函数isSu();从2到sqrt(n)检索因子,因此复杂度为sqrt(n),对每个数,从2开始到n/2,检索质因子。
java代码:

import java.util.Scanner;public class Main1001 {    public static boolean isSu(int n){//判断素数        boolean a = true;        if(n==1){            return false;        }        if(n==2){            return true;        }        for(int i = 2;i<=(int )Math.sqrt(n);i++){//2~sqrt(n)            if(n%i==0){                a = false;                break;            }        }        return a;    }    public static void main(String args[]){        Scanner sc = new Scanner(System.in);        int n;         while(true){            n = sc.nextInt();            if(n==0){                break;            }            int sum = 0;            for(int i = 2;i<n/2;i++){                if(isSu(i)&&isSu(n-i))                    sum++;            }            System.out.println(sum);        }    }}
0 0
原创粉丝点击