尤拉計畫 27

2021-09-24 12:05:16 字數 1007 閱讀 3829

二次「素數生成」多項式

尤拉發現了這個著名的二次多項式:

n2 + n + 41

對於連續的整數n從0到39,這個二次多項式生成了40個素數。然而,當n = 40時,402 + 40 + 41 = 40(40 + 1) + 41能夠被41整除,同時顯然當n = 41時,412 + 41 + 41也能被41整除。

隨後,另乙個神奇的多項式n2 − 79n + 1601被發現了,對於連續的整數n從0到79,它生成了80個素數。這個多項式的係數-79和1601的乘積為-126479。

考慮以下形式的二次多項式:

這其中存在某個二次多項式能夠對從0開始盡可能多的連續整數n都為素數(n值盡可能大),求其係數a和b的乘積。

由於當n為0時n*n + a*n + b = b為素數,線性篩篩一下1000內的素數作為迴圈變數可減少大量時間;

n = 1時公式 1 + a + b 為素數 b為素數,既為奇數,則b+1為偶數,若要公式為素數,a亦為奇數,滿足n>0時公式值恆大與0,則

a >= -63;

#include #include #include using namespace std;

#define max_n 10000000

int prime[max_n+5];

int is_prime[max_n+5];

bool isprm(int x)

return true;

}int main()

for (int j = 1; j <= prime[0]; i++)

is_prime[i*prime[j]] = 1;

if (i % prime[j] == 0) }}

int ans = 0, tmp;

int maxa,maxb;

for (int b = 1; b <= prime[0]; b++)

}if (n > ans) }}

cout《答案:-59231

尤拉計畫 6

前十個自然數的平方和是 1 2 2 2 10 2 385 前十個自然數的和的平方是 1 2 10 2 552 3025 所以平方和與和的平方的差是3025 385 2640.找出前一百個自然數的平方和與和平方的差。def get square sub x 遞迴,展開行列式 if x 1 return...

尤拉計畫 14

以下迭代序列定義在整數集合上 n n 2 當n是偶數時 n 3n 1 當n是奇數時 應用以上規則,並且以數字13開始,我們得到以下序列 13 40 20 10 5 16 8 4 2 1 可以看出這個以13開始以1結束的序列包含10個項。雖然還沒有被證明 collatz問題 但是人們認為在這個規則下,...

尤拉計畫 15

從乙個2 2網格的左上角開始,有6條 不允許往回走 通往右下角的路。對於20 20的網格,這樣的路有多少條?def get load num x,y x,y 網格的路數等於 x 1,y x,y 1 if x 0 or y 0 return 1return get xy load x 1,y get ...