gpt4 book ai didi

python - 考虑到 p 在 python 中是素数,当我执行 p/p+1 + p+1/p 操作时出错

转载 作者:行者123 更新时间:2023-12-01 06:55:50 31 4
gpt4 key购买 nike

所以,我想创建一个简单的程序,返回有关连续素数的计算结果。首先,我创建一个包含所有这些素数的列表,然后尝试计算结果,但这给了我一个超出范围的索引。有人可以帮助我吗?我的程序:

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

最佳答案

一些评论:

  • 对于 1,isPrime 给出 True,而 is 应该返回 False。省略或 len(lista) == 1。例如,参见这个 Numberphile video大约 1 不是质数。
  • 最好将 lista 设为 isPrime() 的局部变量。这样最后就不需要清空了。局部变量仅存在于函数内部,因此您无需担心它们在函数外部。
  • 不用写 if blabla return True else return False,只需使用 return blabla
  • 您需要append将内容添加到somas。 Python 中不允许在 somas 足够长以包含 t 的位置之前将某些内容分配给 somas[t]
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 - 考虑到 p 在 python 中是素数,当我执行 p/p+1 + p+1/p 操作时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58808629/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com