![](/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.