<p>我假设在给定的范围0中没有足够的素数。。49,因此中断条件<code>counter == args[1]</code>永远不会应用,函数返回None。你知道吗</p>
<p>最好将所有重要参数传递到一个函数中,不要使用硬编码常量,这会使函数更加灵活。你知道吗</p>
<p>要获得更有效的算法,请查看:<a href="https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes" rel="nofollow noreferrer">https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes</a></p>
<pre><code>def is_prime(a):
for y in range(2, a):
if a % y == 0: # the modulo operation finds the remainder after division
return False
return True
# pass end condition into function, args[1] is a global variable
def prime_func(max_value, max_prime_count=10):
# you don't need a counter len(primes) do the same, also counter should start a 1
primes = [3]
for x in range(4, max_value):
if is_prime(x):
primes.append(x)
if len(primes) == max_prime_count:
break # max prime count reached
# calculates composites by set operation
composites = set(range(2, max_value)) - set(primes)
# also works if max_prime_count is not reached
return sorted(composites), primes
composites, primes = prime_func(50, 10)
print(composites)
print(primes)
print(len(primes))
</code></pre>