我想写一个等效于嵌套的for循环和条件的列表理解
我尝试写作
lst.append(i,j for i in range(2,num) for j in range(2,i) if num%i==0 if i%j!=0)
哪个给我错误:
生成器表达式必须加括号
我也尝试过
lst=[(i,j) for i in range(2,num) for j in range(2,i) if num%i==0 if i%j!=0]
这不会引发错误,但是我没有得到想要的结果
num=int(input("Enter a number:"))
lst=[]
for i in range(2,num):
if num%i!=0:
continue
else:
isprime=False
for j in range(2,i):
if i%j==0:
isprime=True
break
if not isprime:
lst.append(i)
for ele in lst:
print(ele)
该程序将给出输入数字的素数
答案 0 :(得分:2)
如果您想完全复制那里的内容,可以尝试执行以下操作:
lst = [i for i in range(2, num) if num % i == 0 and all(i % j for j in range(2, i))]
尽管它效率不高,因为它缺乏突破的能力。
如果您想通过列表理解来查找所有素数,那么这不是坏方法:
lst = [x for x in range(2, num) if all(x % y != 0 for y in range(2, int(x ** 0.5) + 1))]
答案 1 :(得分:1)
一种简单的(但不是很有效)的列表理解方法将是这样的:
primefactors = [n for n in range(2,num) if num%n==0 and all(n%f for f in range(2,n))]