演算法讀書筆記 開關燈與質因數分解

2021-06-23 02:20:34 字數 645 閱讀 7817

現在給出乙個範圍[1, n]編號的燈,現在所有燈都是關的

第乙個人把是1的倍數的燈都開啟,

第二個人把所有2的倍數的燈開啟,

第三個人把所有3的倍數的燈開啟,

照著樣子算下,問有那些燈是關的,那些是開的?

對於任意乙個數字x 屬於 [1, n] ,他被開或者關的次數是可以知道的,比如

12號燈會被 1,2,3,4,6,12個人開關,顯然可以知道,剛開始是關的,那麼

偶數次開關之後還是關的,奇數次之後才是開的,

因為是倍數的原因,我們可以看到,這些數字都是12的因數,

對於指定的x,x的開關是掌握在x的因數的個數上的,

初等數論,乙個數x總是可以表示成一系列素數的冪次的積x = 2^n 3^m 5^q......

那麼用f(x) 表示數字x的因數個數,即f(x) = (n +1)(m + 1)(q + 1)....

在這裡,我們分情況討論一下

如果所有的n,m,q,......都是偶數的話,f(x)是奇數

如果存在任意乙個n(或者m,q) 是奇數的話,那麼f(x)是偶數

對於乙個數字x,如果他的素數冪次都是偶數的話,數字x是乙個平方數

現在我們反推回去,數字x是乙個平方數,他的因數個數f(x)是乙個奇數,f(x)是奇數的話他的燈是開的

質因數分解演算法C 實現

演算法思想 對n進行分解質因數,應先找到乙個最小的質數k,然後按下述步驟完成 1 如果這個質數恰等於n,則說明分解質因數的過程已經結束,列印出即可。2 如果n k,但n能被k整除,則應列印出k的值,並用n除以k的商,作為新的正整數你n,重複執行第一步。3 如果n不能被k整除,則用k 1作為k的值,重...

素數表 與 質因數分解

namespace?primens?pp 1?void?init for i i p pp i 2 1?解決 質因數分解 演算法 順搜,逐個測試 輸入 待分解數num,init 的輸出 輸出 質因數個數dp,質因數表d 0dp 1 指數表e 0dp 1 備註 若num maxn 2,可能會將所有大於...

生物晶元(關燈問題 質因數分解定理)

x博士正在研究一種生物晶元,其邏輯密集度 容量都遠遠高於普通的半導體晶元。博士在晶元中設計了 n 個微型光源,每個光源操作一次就會改變其狀態,即 點亮轉為關閉,或關閉轉為點亮。這些光源的編號從 1 到 n,開始的時候所有光源都是關閉的。博士計畫在晶元上執行如下動作 所有編號為2的倍數的光源操作一次,...