我正试图从Mersenner素数的列表中筛选出来,但它得到了空值


k=2
a=[]
while((((2**k)-1))<=upper):
#using filter() to generate the list
#in the form of 2^k-1
result=filter(lambda x: x==((1<<k)-1),prime)
a.append(list(result))
k+=1

如果我做错了什么,请帮帮我,让我知道。我目前是Python的新手,所以我没有太多的知识。

从这里使用高效函数列出N和这里以下所有素数的最快方法使用列表综合和我的代码找到梅森素数就可以了。在那里你可以用你喜欢的任何东西填充upperprime

def mersenne_test(n):
k = 0
m = 0
while m<=n:
m = 2**k-1
if(n==m):
return "This number is a Mersenne number since it is equal by to 2**%d-1" % k
k += 1
return "This number is not a Mersenne number."
def primes(n):
""" Returns  a list of primes < n """
sieve = [True] * n
for i in range(3,int(n**0.5)+1,2):
if sieve[i]:
sieve[i*i::2*i]=[False]*((n-i*i-1)//(2*i)+1)
return [2] + [i for i in range(3,n,2) if sieve[i]]
upper = 100
primes = primes(100)
for number in primes:
print (mersenne_test(number))

最新更新