下面是融通ň更好的算法。我會用文字來描述它,所以你可以自己編寫代碼。
1) Set f = 2. Variable f represents the current trial factor.
2) If f * f > n, then n must be prime, so output n and stop.
3) Divide n by f. If the remainder is 0, then f is a factor of n,
so output f and set n = n/f, then return to Step 2.
4) Since the remainder in the prior step was not 0, set f = f + 1
and return to Step 2.
例如,對因子13195,首先設置˚F = 2;步驟2中的測試未得到滿足,步驟3中的剩餘部分爲1,因此在步驟4中設置f = 3並返回到步驟2.現在步驟2中的測試未得到滿足,步驟3中的剩餘部分爲1 ,因此在步驟4中設置f = 4並返回步驟2.現在步驟2中的測試未得到滿足,步驟3中的剩餘部分爲3,因此在步驟4中設置了f = 5並返回步驟2
現在步驟2中的測試未得到滿足,但步驟3中的剩餘部分爲0,因此5是13195的因子;輸出5,設置爲n = 2639,並返回步驟2.現在步驟2中的測試未得到滿足,步驟3中的剩餘部分爲4,因此在步驟4中設置了f = 6並返回步驟2。現在,在步驟2中的試驗是不滿足,則在步驟3中餘數爲5,因此在步驟4中設置˚F = 7,並返回到步驟2。
現在在步驟2中的試驗是不滿足,但步驟3中的餘數爲0,所以7是2639的因子(也是13195);輸出7,設置爲n = 377,並返回步驟2.現在步驟2中的測試未得到滿足,步驟3中的剩餘部分爲6,因此在步驟4中設置了f = 8並返回步驟2。以這種方式繼續,直到f = 13。
現在,在步驟2中的試驗是不滿足,但是在步驟3中餘數爲0,所以圖13是377(以及2639和13195)的一個因素;輸出端13,設置Ñ = 29,並返回到步驟2中步驟2在這裏,測試是滿足,因爲13×13 = 169,其大於29,所以29是質數,它輸出和停止。最終分解爲5 * 7 * 13 * 29 = 13195.
的600851475143件作品中完全相同的方式的分解,不同之處在於它需要更長的時間。有更好的方法來整數。但是這個算法很簡單,對於PE3來說已經足夠了。
沒有與此算法的主要問題。建議:在循環中添加幾條打印語句,以查看算法產生的數字。不要試圖處理這個龐大的號碼,除非你確定你的代碼可以在你可以手動檢查的小號碼上正常工作。在相關說明中,您可能會發現使用鉛筆和紙張遵循您的算法很有幫助。 –