AOJ0185 Goldbach's Conjecture II

問題リンク Goldbach's Conjecture II

  • 解法

エラトステネスの篩を作ります。
あとは2<=a<=n/2なるaに対して、aとn-aがともに素数であるかどうかを調べます。

  • ソース
import java.util.Arrays;
import java.util.Scanner;

//Goldbach's Conjecture II
public class AOJ0185 {

	public static void main(String[] args) {
		boolean[] p = new boolean[1000001];
		Arrays.fill(p, true);
		p[0]=p[1]=false;
		for(int i=2;i<1000001;i++)if(p[i])for(int j=i*2;j<1000001;j+=i)p[j]=false;
		Scanner sc = new Scanner(System.in);
		while(true){
			int n = sc.nextInt();
			if(n==0)break;
			int c = 0;
			for(int i=2;i<=n/2;i++)if(p[i]&&p[n-i])c++;
			System.out.println(c);
		}
	}
}