2739:
package poj;
import java.util.Scanner;
public class SumofConsecutivePrimeNumbers {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int value;
while(cin.hasNext()){
value = cin.nextInt();
if (value == 0) System.exit(0);
if (value == 2 || value == 3)System.out.println(1);
else {
int sum=0, num=0;
if(isPrime(value)) num++;
for(int i = 2; i < value;i++){
if (!isPrime(i)) continue;
for(int j = i;j <= value;j++ ){
if (isPrime(j)) {
sum += j;
if(sum == value){
num++;
sum =0;
break;
}else if(sum >value){
sum = 0;
break;
}
}
}
}
System.out.println(num);
}
}
}
//判断是否是素数
private static boolean isPrime(int value){
for(int i = 2;i<(int)Math.sqrt(value);i++){
if(value % i == 0)
return false;
}
return true;
}
}
2262:
package poj;
import java.util.Scanner;
public class GoldbachConjecture {
public static void main(String[] args) {
boolean notPrime[]=new boolean[1000001];
notPrime[1]=true;
for(int i = 2;i <= 1000;i++){
if(!notPrime[i]){//是素数
for(int j = 2 ;i*j<=1000000;j++){
notPrime[i*j]= true;
}
}
}
Scanner cin = new Scanner(System.in);
while(cin.hasNext()){
int n = cin.nextInt();
if(n == 0) System.exit(0);
int sum=0;
int i,j=0;
for(i = 2;i<n;i++){
boolean flag = false;
if(!notPrime[i]){
for(j=n;i+j >= n;j--){
if(!notPrime[j]){
sum = i + j;
if(sum == n){
flag = true;
break;
}
}
}
if (flag == true) {
break;
}
}
}
System.out.println(n + " = "+ i +" + "+ j );
}
}
}
3006:
package poj;
import java.util.Scanner;
public class DirichletTheoremonArithmeticProgressions {
public static void main(String[] args) {
boolean notPrime[] = new boolean[1000000];
notPrime[1]=true;
for(int i = 2;i<= 1000;i++){
if(!notPrime[i]){ //是素数
for(int j = 2;i*j<1000000;j++)
notPrime[i*j] = true;
}
}
Scanner cin = new Scanner(System.in);
int a,d,n;
while(cin.hasNext()){
a = cin.nextInt();
d = cin.nextInt();
n = cin.nextInt();
if( (a==0)&&(d==0)&&(n==0) ) System.exit(0);
int value,i=0,j=0;
int prime[] = new int[n];
while(++i != 0){
value = a+ (i-1)*d;
if(!notPrime[value])
prime[j++]=value;
if(j == n){
System.out.println(prime[--j]);
break;
}
}
}
}
}