二次「素數生成」多項式
尤拉發現了這個著名的二次多項式:
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 ...