import java.util.Scanner;
import java.util.HashSet;
import java.util.ArrayList;
import java.lang.Math.*;
public class Main {
public static void main(String args[]) {
Scanner cin = new Scanner(System.in);
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(2);
numbers.add(3);
for(int i=3; i< 32768; i+=2){
boolean flag = false;
for(int j=0; j< numbers.size(); j++){
if(numbers.get(j)>Math.sqrt(i)){
break;
}else if((i%numbers.get(j))==0){
flag=false;
break;
}else{
flag=true;
}
}
if(flag==true)
numbers.add(i);
}
HashSet<Integer> numberSet = new HashSet<Integer>(numbers);
while(cin.hasNextInt()){
int n = cin.nextInt();
int count=0;
if(n==0)
break;
for(int i=0; numbers.get(i)<=(n/2); i++){
if(numberSet.contains(n-numbers.get(i))){
count ++;
}
}
System.out.println(count);
}
}
}
2009年6月11日 星期四
ACM Q686
訂閱:
張貼留言 (Atom)
這一題必須先將所有的質數列出
回覆刪除再開始一一檢查Conjecture
否則會TLE