![](/img/trans.png)
[英]how to get list of possible numbers with given number of factors in python?
[英]Python - Check if numbers in list are factors of a number
我有一個數字list
( integers
)(例如,從1到10)。
它們不一定是連續的,但它們是按升序排列的。
我已經多次提示用戶輸入可用數字的選擇。 輸入該數字后,會將其連同可能存在的所有因素從列表中刪除。
我已阻止用戶選擇素數。 但是,在某個時間點上可能存在非質數,沒有余數。
我是Python的新手,因此無法實現:
檢查所選數字是否沒有剩余因子(即使它不是素數)。
檢查是否僅保留質數或無因數的數。
我正在考慮使用for
語句,但不確定如何實現它們。 誰能提供建議或代碼? 提前致謝...
對於第一個問題,您可以使用列表推導來構建新列表,其中每個元素都不是所選的數字,也不是所選數字的因數(請參見代碼)。 將此與原始列表進行比較。
$ python
>>> selected_number = 6
>>> [x for x in range(1,11) if selected_number % x]
[4, 5, 7, 8, 9, 10]
對於第二個問題,請檢查每個元素是否為質數。 如果不是,請檢查沒有因素的數字。 對於每一個元素,你可能mod
在最初的名單,並檢查它是否是零的列表。 不過,我敢肯定有一種更快的方法。
如果L是非零數字的列表,則作為數字N的因子的列表為:
factors = [x for x in L if N % x == 0]
當然,如果N在L中沒有因子,則該列表將只是空的。
我不確定您所說的“無因子數”是什么意思,除非您說“素數”(?)-在Python中檢查素數有一些SO問題和答案,我會使用gmpy.is_prime
(來自擴展名gmpy ),但是我當然有偏見;-)。
如果您的意思是“所有在L中沒有因數的數字”,那么,有無數個,因此很難列出所有這些。 他們的無限生成器:
import itertools
def nofactorsinlist(L):
for i in itertools.count():
if any(x for x in L if i % x == 0):
continue
yield i
可能會有一些優化,但是這確實很簡單,我不願意添加復雜的優化而又不完全了解您的追求!-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.