^{bq}$
这是一种基于筛分的方法,它有点短,速度快得多:def find_prime_pairs(n):
sieve = [True] * n
if n > 0:
sieve[0] = False
if n > 1:
sieve[1] = False
for number in range(2, int(n ** 0.5) + 1):
if sieve[number]:
for index in range(number * number, n, number):
sieve[index] = False
return [(a, b) for b, a in enumerate(range(0, n - 2), start=2) if sieve[a] and sieve[b]]
print(*find_prime_pairs(100), sep='\n')
用法
^{pr2}$
当使用小于等于100的素数时,任何代码都可以,它对性能的征税范围太小了。让我们考虑一下1000000(一百万)。为了计时,我们将计数而不是打印。在
@AlexHall提供的第一个答案需要两倍于原始代码的时间来计算对数,直到一百万。他的第二个答案比你原来的代码要长三倍。短并不总是意味着更快。在你完全测试过之前,不要相信任何答案。在
我上面基于筛子的代码比你的原始代码快四倍,并且小了15%。在