我正在尝试 Euler 项目的第 50 题。
素数 41 可以写成六个连续素数之和:
41 = 2 + 3 + 5 + 7 + 11 + 13 这是添加到小于 100 的素数的最长连续素数之和。与素数相加的一千以下的最长连续素数之和包含 21 项,等于 953。哪一个小于一百万的素数可以写为最多连续素数之和?
这是我的代码:
    public class consPrime
    {
        static int checker(int ar[],int num,int index) //returns no.of consecutive
        {                                              //primes for the given num  
            while(true)
        {
        int temp=num;
        for(int i=index;i>=0;i--)
        {
            temp=temp-ar[i];
            if(temp==0)
            {
                return (index-i+1);
            }               
        }           
        index--;
        if(index==0)
        return 0;           
        }
    }
    public static void main(String args[])
    {               
        int n=100000;
        int ar[]=new int[n];
        int total=0;int flag;
        for(int i=2;i<1000000;i++)   //Generates an array of primes below 1 million
        {
            flag=1;
            for(int j=2;j<=Math.sqrt(i);j++)
            {
                if(i%j==0)
                {
                    flag=0;
                    break;
                }                   
            }
            if(flag==1)
            {
                ar[total]=i;
                total++;
            }               
        }
        int m=0;
        int Big=0;
        for(int i=total;i>=0;i--) //Prints the current answer with no.of prime
        {
            m=checker(ar,ar[i],i-1);
            if(Big<=m)
            {Big=m;
                System.out.println(ar[i]+"     "+Big);
            }
        }           
    }       
}
基本上,它只是创建一个包含最多 1000000 的所有素数的向量,然后循环遍历它们以找到正确的答案。答案是 997651,计数应该是 543,但我的程序分别输出 990707 和 75175。可能有什么问题?