51nod 1226 構造質數

2021-07-24 13:27:31 字數 1920 閱讀 4075

求 [l

,r] 中有多少素數能寫成 x4

−y4x

3+y3

的形式。

約定:l,r

≤1013

考慮把

x 和

y的最大公約數提出來,設為

d ,把兩數寫為 dx

和 dy ((x

,y)=

1 ),設有素數

p 滿足條件,嘗試化簡原式,: p(

x3+y

3)=d

(x4−

y4)因式分解,可以得到: p(

x2−x

y+y2

)=d(

x−y)

(x2+

y2)

顯然,因子

p 應該在 (x

2+y2

)裡。另一方面,因為 (x

,y)=

1 ,所以有 (x

−y,x

2−xy

+y2)

=1,所以只能有 x−

y=1 。那麼我們繼續化簡,得到: p(

x2+x

+1)=

d(2x

2+2x

+1)

因為 (x2

+x+1

,2x2

+2x+

1)=1

,所以我們可以得到:

,我們從前向後,用小的 ai

去除大的 aj

。 具體地,我們從 i=

1 開始列舉每個 ai

,向後找到它可以整除的所有 aj

,把 aj

裡面的所有 ai

因子除乾淨。

我們斷言,按這樣的演算法處理,列舉到每個 ai

的時候,ai

一定是乙個素數或

1 。

證明:

先奠基,首先 a1

是乙個素數。

ai是乙個合數,且 ai

中含有兩個不同的質因子時,等價於:

存在不同的兩質數

p ,

q使得

i 是 f(

x)≡0

modp和 f

(x)≡

0modq

的最小正整數解。(如果不是的話,ai

會被之前的 aj

篩掉)

那麼我們有

i且 i,所以: 2i

2+2i

+1矛盾。

因此,每個

i 只可能是最多乙個

p的同餘方程 f(

x)≡0

modp

的最小解。

類似上文的思路,還可以證明如果這樣的

p 存在,那麼 ai

裡 p的次數最大是 1。

如果 a

i 是素數,我們又會用它去篩之後的 aj

,根據迴圈不變式的那一套理論,這個命題應該是成立的。

答案怎麼統計呢?如果列舉到某個 ai

發現 ai

=f(i

) 且 ai

≥l時,就給答案加

1 嘛。

我們設有 m個

≤r的 f(

x),按照上文描述,演算法的複雜度是 o(

m2) 的,可能還會 tle,有優化的餘地嗎?

注意到 f(

x)≡0

modp

當且僅當 f(

x%p)

≡0modp

,而<

p 和 p−

i−1,所以我們根據 a

i 和 i

可以知道它應該去篩哪些數,加上這個優化就可以過了。

複雜度?總比 o(

mlogm)

快,更精確的分析就不會了。

51nod1181 質數中的質數

1181 質數中的質數 質數篩法 sgu基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 如果乙個質數,在質數列表中的編號也是質數,那麼就稱之為質數中的質數。例如 3 5分別是排第2和第3的質數,所以他們是質數中的質數。現在給出乙個數n,求 n的最小的質數中的質數是多少 可...

51nod 1106 質數檢測

傳送門 1106 質數檢測 根據質數的定義,在判斷乙個數n是否是質數時,我們只要用1至n 1去除n,看看能否整除即可。但我們有更好的辦法。先找乙個數m,使m的平方大於n,再用 m的質數去除n n即為被除數 如果都不能整除,則n必然是質數。如我們要判斷1993是不是質數,50 50 1993,那麼我們...

51Nod 1106 質數檢測

1106 質數檢測 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 收藏 關注 給出n個正整數,檢測每個數是否為質數。如果是,輸出 yes 否則輸出 no input 第1行 乙個數n,表示正整數的數量。1 n 1000 第2 n 1行 每行1個數 2 s i 10 9 ...