UVa 1210 - Sum of Consecutive Prime Numbers Solution

import java.math.BigInteger;
import java.util.*;
class Main {
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        List<BigInteger> a=new ArrayList<BigInteger>();
        for(BigInteger i=new BigInteger("2");i.compareTo(new BigInteger("10001"))==-1;i=i.add(BigInteger.ONE)){
            if(i.isProbablePrime(10))
                a.add(i);
        }
        while(true){
            BigInteger n=in.nextBigInteger();
            if(n.equals(BigInteger.ZERO))
                return;
            int i=0,j=0;
            BigInteger sum=a.get(0);
            int ans=0;
            do{
                // System.out.println(sum);
                int val=sum.compareTo(n);
                if(val==-1){
                    j++;
                    if(j<a.size())
                        sum=sum.add(a.get(j));
                }
                else if(val==1){
                    sum=sum.subtract(a.get(i));
                    i++;
                }
                else{
                    ans++;
                    j++;
                    if(j<a.size())
                        sum=sum.add(a.get(j));
                }
            }
            while(i>=0&&j<a.size()&&n.compareTo(a.get(j))!=-1);

            System.out.println(ans);
        }
    }
}

Comments