python - 考虑到 python 中的 pa 素数,当我执行 p/p+1 + p+1/p 操作时出错
问题描述
所以,我想创建一个简单的程序来返回关于连续素数的计算。首先,我创建了一个包含所有这些素数的列表,然后我尝试计算结果,但这给了我一个超出范围的索引。任何人都可以帮助我吗?我的程序:
primes = []
lista = []
somas = []
def isPrimeNumber(number): #Calculate if is or not prime, here is everything ok
for i in range(1, number+1):
if number % i == 0:
lista.append(i)
if len(lista) == 2 or len(lista) == 1:
lista.clear()
return True
else:
lista.clear()
return False
for c in range(1,100):
if isPrimeNumber(c):
primes.append(c)
for t in range(1,len(primes)): #Here is the problem!
somas[t] = primes[t]/primes[t-1] + primes[t-1]/primes[t]
print(primes)
print(somas)
错误:
Traceback (most recent call last):
File "C:\Users\Leleco\Desktop\primos_teom.py", line 19, in <module>
somas[t] = primes[t]/primes[t-1] + primes[t-1]/primes[t]
IndexError: list assignment index out of range
解决方案
一些备注:
- 您的 isPrime 为 1 提供 True,而 is 应返回 False。省略
or len(lista) == 1
. 例如,请参阅有关 1 不是素数的Numberphile 视频。 - 最好
lista
为isPrime()
. 这样就不需要最后清空了。局部变量只存在于函数内部,因此您无需担心函数外部的它们。 - 而不是写
if blabla return True
else return False
,只是使用return blabla
- 您需要
append
将内容添加到somas
. 在 Python 中,仅将某些内容分配给somas[t]
beforesomas
就足以包含一个位置 fort
是不允许的。
def isPrimeNumber(number): #Calculate whether number is prime or not
lista = []
for i in range(1, number+1):
if number % i == 0:
lista.append(i)
return len(lista) == 2
primes = []
for c in range(1,100):
if isPrimeNumber(c):
primes.append(c)
somas = []
for t in range(1,len(primes)):
somas.apppend(primes[t]/primes[t-1] + primes[t-1]/primes[t])
print(primes)
print(somas)
PS:使用zip
,总和的计算也可以写成:
for p0, p1 in zip(primes[:-1],primes[1:]):
somas.append(p1/p0 + p0/p1)
推荐阅读
- python - 带有 dict 的元组以列出元素修改
- php - 2.3 中的相同代码不适用于 Magento 2.3.3 版本
- jenkins - 使用 Kubernetes 集群部署的 Jenkins 管道中由未知权限错误签署的证书
- javascript - 在 Angular 中使用灰度时未定义获取缓冲区
- java - 单应用定制Android ROM
- continuous-integration - Gitlab Ci 在第二个工作之后运行一个工作
- bittorrent - 同行报告但未连接到自托管的 bittorrent 跟踪器
- excel - Excel:如何收集与另一列中的重复项相关联的列中的唯一值?
- asp.net-core - “缺少类型映射配置或不支持的映射。” ASP.NET Core WebApi 中的自动映射异常
- express - 无法在护照 github 策略中删除会话