【发布时间】:2019-06-20 08:12:36
【问题描述】:
我们必须生成一个 python 函数来返回非质数。
例如,如果我们传递10,它应该返回1 4 6 8 9 10 12 14 15 16
这是我迄今为止尝试过的:
def np_generator(n):
str1 = [1]
for num in range(2, 100):
if num > 1:
for i in range(2, num):
if (num % i) == 0:
str1.append(num)
break
if(len(str1)==n):
print(str1)
else:
None
pass
它的输出接近解决方案:
当我将12 作为n 传递时,它会返回:
1
[1]
2
[1, 4]
[1, 4]
[1, 4]
3
[1, 4, 6]
[1, 4, 6]
[1, 4, 6]
[1, 4, 6]
[1, 4, 6]
4
[1, 4, 6, 8]
5
6
[1, 4, 6, 8, 9, 10]
[1, 4, 6, 8, 9, 10]
[1, 4, 6, 8, 9, 10]
[1, 4, 6, 8, 9, 10]
[1, 4, 6, 8, 9, 10]
[1, 4, 6, 8, 9, 10]
[1, 4, 6, 8, 9, 10]
[1, 4, 6, 8, 9, 10]
[1, 4, 6, 8, 9, 10]
7
[1, 4, 6, 8, 9, 10, 12]
[1, 4, 6, 8, 9, 10, 12]
[1, 4, 6, 8, 9, 10, 12]
[1, 4, 6, 8, 9, 10, 12]
[1, 4, 6, 8, 9, 10, 12]
[1, 4, 6, 8, 9, 10, 12]
[1, 4, 6, 8, 9, 10, 12]
[1, 4, 6, 8, 9, 10, 12]
[1, 4, 6, 8, 9, 10, 12]
[1, 4, 6, 8, 9, 10, 12]
[1, 4, 6, 8, 9, 10, 12]
8
[1, 4, 6, 8, 9, 10, 12, 14]
9
10
[1, 4, 6, 8, 9, 10, 12, 14, 15, 16]
[1, 4, 6, 8, 9, 10, 12, 14, 15, 16]
[1, 4, 6, 8, 9, 10, 12, 14, 15, 16]
[1, 4, 6, 8, 9, 10, 12, 14, 15, 16]
[1, 4, 6, 8, 9, 10, 12, 14, 15, 16]
[1, 4, 6, 8, 9, 10, 12, 14, 15, 16]
[1, 4, 6, 8, 9, 10, 12, 14, 15, 16]
[1, 4, 6, 8, 9, 10, 12, 14, 15, 16]
[1, 4, 6, 8, 9, 10, 12, 14, 15, 16]
[1, 4, 6, 8, 9, 10, 12, 14, 15, 16]
[1, 4, 6, 8, 9, 10, 12, 14, 15, 16]
[1, 4, 6, 8, 9, 10, 12, 14, 15, 16]
[1, 4, 6, 8,{-truncated-}
预期的输出是:
1
4
6
8
9
10
12
14
15
16
18
20
【问题讨论】:
-
这里有什么生成器?
-
generator将从这个函数中打印出 +ve 非质数。 -
为什么将生成器作为函数参数传递?如果你在它之后使用为什么处理?
-
嗨@prashantrana 我也添加了
generator的代码,请看一下! -
但生成器在该函数中未使用。为什么要通过?请注意,您还有许多其他错误:集合没有
append方法,while 循环永远不会结束,因为n总是大于 1,等等。
标签: python python-3.x primes