一、内容
分拆素数和
把一个偶数拆成两个不同素数的和,有几种拆法呢?
Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
Sample Input
30
26
0
Sample Output
3
2
二、思路
-预先筛出质数,然后i从2开始到n/2去判断是否i 和 n - i 2个数都是质数
三、代码
import java.util.*;
public class HDU_2098 {
static boolean[] no_prime = new boolean[10005];
static int n;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
init();
while ((n = sc.nextInt()) != 0) {
int cnt = 0;
for (int i = 2; i <= n / 2; i++) {
if (!no_prime[i] && !no_prime[n - i] && i != n - i){
cnt++;
}
}
System.out.println(cnt);
}
}
static void init() {
for (int i = 2; i * i <= 10000; i++) {
for (int j = i * i; j <= 10000; j += i) {
no_prime[j] = true;
}
}
}
}