首页 > 解决方案 > 打印满足以下等式的素数

问题描述

我想找到满足以下等式的素数。方程是: pn = 2^k +1 , k <= 32

我无法得到任何输出。我在哪里做错了?你能在代码上显示它吗?

def  is_prime(x):
for k in range(1, 32 + 1):
    if k > 1:
        for i in range (2 , k):
            if (k % i) == 0:
                break
            else:
                p = 2**k+1
                if is_prime (p):
                    print (p)

标签: pythonprimesequation

解决方案


好的,我想说的是:
与其迭代从 1 到 2^32 的每一个数字,不如只迭代你感兴趣的数字的 32 个指数,并检查它们是否是素数。

例如

from math import sqrt
def is_prime(x):
    for i in range(2, int(sqrt(x))+1):
        if x%i == 0:
            return False
    return True

for k in range(1, 33):
    p = 2**k+1
    if is_prime(p):
        print(f'{k:2}: {p}')

#  1: 3
#  2: 5
#  4: 17
#  8: 257
# 16: 65537

推荐阅读