![](/img/trans.png)
[英]Check whether a number can be expressed as a sum of two semi-prime numbers in Python
[英]How do I check a list of prime factors to determine if the original number can be expressed the product of two 3-digit numbers, in Python?
我試圖確定一個 6 位數字是否可以表示為兩個三位數字的乘積。
我已將 6 位數字按從小到大的順序分解為素數列表,如果其中一個素數超過我感興趣的三位數大小,則使用 break 語句關閉進程。
我似乎無法制定一種算法,將素數重新組合成所有可能的配對因子。 我可以很容易地檢查每一對的三位數字。
我在 python 工作,如果這有什么不同的話。 如果有人可以偽代碼或以其他方式幫助概述邏輯步驟。
這只是更大問題的最后一步。 如果您對完整的上下文感興趣,那就是 Euler Project Problem #4... https://projecteuler.net/problem=4
正如@Ken YN 在評論中所說,對於大量因素,您最好循環遍歷所有 3 位數字。
在您的問題中,您似乎在問如何生成子集: I can't seem to formulate an algorithm that recombines the primes into all possible paired factors
。
我們可以使用二進制很容易地做到這一點:
如果您有一個(不一定是不同的)因子列表,您可以獲取長度,並以二進制表示形式生成從 0 到 2^length 的所有數字,確保保存前導 0。
然后,您可以循環遍歷每個字符串,如果一個字符為 0,則不包含在因子中,如果為 1,則包含。 然后,我們可以很容易地使用除法生成另一個因子。 接下來,我們很容易檢查長度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.