2017年藍橋杯javaB組——等差素數列

1998cying發表於2018-07-16

**題目:**2,3,5,7,11,13,….是素數序列。
類似:7,37,67,97,127,157 這樣完全由素陣列成的等差數列,叫等差素數數列。
上邊的數列公差為30,長度為6。
2004年,格林與華人陶哲軒合作證明了:存在任意長度的素數等差數列。
這是數論領域一項驚人的成果!
長度為10的等差素數列,其公差最小值是多少?

解題思維:
暴力破解 列舉法! 根據等差數列的通項公式:an=a1+(n-1)*d,可使用兩重迴圈分別列舉數列的第一項a1和公差d,對每一項都需進行素數判定。

程式碼如下

package prepare;

public class dengchasushu {
//  長度為10的等差素數列,其公差最小值是多少?

    //是否為素數
    static boolean isPrime(int n){
        boolean flag = true;
        for(int i=2;i<=Math.sqrt(n);i++){
            if(n%i==0){
                flag = false;
            }
        }
        return flag;
    }

    //是否為等差數列 用雙重迴圈 暴力尋找首項和方差
    public static void main(String[] args) {
        // 等差素數
        for(int i=0;i<10000;i++){
            if(isPrime(i)){
                for(int j=1;j<10000;j++){
                    if(isPrime(i+j) && isPrime(i+2*j) && isPrime(i+3*j) && isPrime(i+4*j) && isPrime(i+5*j) && isPrime(i+6*j) && isPrime(i+7*j) && isPrime(i+8*j) && isPrime(i+9*j)){
                        System.out.println("公差為:"+j);
                        break;
                    }
                }
            }
        }
    }
}

相關文章