python - 我正在尝试从 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 以下的所有素数的最快方法和使用列表推导查找 Mersenne 素数的方法和我的类似代码可以完成这项工作。你可以在哪里填满你喜欢upper
的prime
任何东西。
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))
推荐阅读
- android - 使用颤振不停地振动
- php - 使用 laravel 理解模型关系
- javascript - 如何在 JS 中传递 C# 变量
- reactjs - 如何在输入和表单中使用循环?
- php - 未定义的属性:运行 laravel 项目的 stdClass::$column_name 问题
- wso2 - WSO2:使用 Integration Studio 的 RabbitMQ AMQP 传输消费者代理
- sql - Oracle加入递归
- javascript - 将输入事件应用于每个动态添加的文本输入
- mysql - Laraver 查询 Union All
- android - Flutter [错误:flutter/lib/ui/ui_dart_state.cc(177)] 未处理的异常:类型“int”不是类型转换中“String”类型的子类型