重复和缺少前两个质数的错误
Error with Duplicate and Missing First Two Prime numbers
我的代码的目的是根据确定最终值的参数创建素数列表。我的代码无法产生预期的结果。我相信这与我的嵌套 for 循环有关。
def prime(num):
primes = [2,3]
for possible_prime in range(2,num+1):
isPrime = True
for number in range(2, int(possible_prime**0.5) +1):
if possible_prime%number == 0:
isPrime = False
break
if isPrime:
primes.append(possible_prime)
return primes
结果:
prime(60)
[2, 3, 5, 7, 9, 11, 11, 13, 13, 15, 17, 17, 17, 19, 19, 19, 21, 23, 23, 23, 25, 25, 25, 27, 29, 29, 29, 29, 31, 31, 31, 31, 33, 35, 35, 35, 37, 37, 37, 37, 37, 39, 41, 41, 41, 41, 41, 43, 43, 43, 43, 43, 45, 47, 47, 47, 47, 47, 49, 49, 49, 49, 49, 51, 53, 53, 53, 53, 53, 53, 55, 55, 55, 57, 59, 59, 59, 59, 59, 59]
我收到重复项,我必须将 2 和 3 硬编码到列表中
你这里的缩进有误
应该写成:
def prime(num):
primes = []
for possible_prime in range(2,num+1):
isPrime = True
for number in range(2, int(possible_prime**0.5) +1):
if possible_prime%number == 0:
isPrime = False
break
# Notice this indentation change
if isPrime:
primes.append(possible_prime)
return primes
对我有用。适当缩进并添加一行以删除重复项。
def prime(num):
primes = [2,3]
for possible_prime in range(2,num+1):
isPrime = True
for number in range(2, int(possible_prime**0.5) +1):
if possible_prime%number == 0:
isPrime = False
break
if isPrime:
if possible_prime not in primes: # add this line
primes.append(possible_prime)
return primes
print(prime(60))
Out[58]: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59]
我的代码的目的是根据确定最终值的参数创建素数列表。我的代码无法产生预期的结果。我相信这与我的嵌套 for 循环有关。
def prime(num):
primes = [2,3]
for possible_prime in range(2,num+1):
isPrime = True
for number in range(2, int(possible_prime**0.5) +1):
if possible_prime%number == 0:
isPrime = False
break
if isPrime:
primes.append(possible_prime)
return primes
结果:
prime(60)
[2, 3, 5, 7, 9, 11, 11, 13, 13, 15, 17, 17, 17, 19, 19, 19, 21, 23, 23, 23, 25, 25, 25, 27, 29, 29, 29, 29, 31, 31, 31, 31, 33, 35, 35, 35, 37, 37, 37, 37, 37, 39, 41, 41, 41, 41, 41, 43, 43, 43, 43, 43, 45, 47, 47, 47, 47, 47, 49, 49, 49, 49, 49, 51, 53, 53, 53, 53, 53, 53, 55, 55, 55, 57, 59, 59, 59, 59, 59, 59]
我收到重复项,我必须将 2 和 3 硬编码到列表中
你这里的缩进有误 应该写成:
def prime(num):
primes = []
for possible_prime in range(2,num+1):
isPrime = True
for number in range(2, int(possible_prime**0.5) +1):
if possible_prime%number == 0:
isPrime = False
break
# Notice this indentation change
if isPrime:
primes.append(possible_prime)
return primes
对我有用。适当缩进并添加一行以删除重复项。
def prime(num):
primes = [2,3]
for possible_prime in range(2,num+1):
isPrime = True
for number in range(2, int(possible_prime**0.5) +1):
if possible_prime%number == 0:
isPrime = False
break
if isPrime:
if possible_prime not in primes: # add this line
primes.append(possible_prime)
return primes
print(prime(60))
Out[58]: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59]