我正在为一个类编写一个简短的片段,该类应该在给定的数字列表中运行并追加任何素数。现在,它正在返回范围内的所有数字。
我在网上找到了如何做到这一点的例子,但我想亲自尝试一下,但我好像碰壁了.这是我的代码:
from random import randrange
from time import sleep
def prime():
user_num = eval(input("Input a number: "))
list_prime = []
for i in range(2,user_num):
if (i % 2) == 1 and\
(i % 3) == 1 and\
(i % 4) == 1 and\
(i % 5) == 1 and\
(i % 6) == 1 and\
(i % 7) == 1 and\
(i % 8) == 1 and\
(i % 9) == 1 or\
i == 2:
list_prime.append(i)
if list_prime == '':
print('No prime numbers.')
if list_prime != '':
print('\nPrime numbers from 1 to ' + str(user_num) + ': ' + str(list_prime))
sleep(1)
print('\nClosing console in 60 seconds...')
sleep(60)
prime()发布于 2018-11-11 06:50:36
正如他所说,你没有正确地检查素数。
from random import randrange
from time import sleep
list_prime = []
user_num = 0
def prime():
user_num = eval(input("Input a number: "))
for i in range(2,user_num):
j = 2
isprime = 1
while (j <= i/2):
if (i % j == 0):
isprime = 0
break
j+=1
if (isprime == 1):
list_prime.append(i)
prime()
if list_prime == '':
print('No prime numbers.')
if list_prime != '':
print('\nPrime numbers from 1 to ' + str(user_num) + ': ' + str(list_prime))
sleep(1)
print('\nClosing console in 60 seconds...')
sleep(60)发布于 2018-11-11 06:26:30
检查模块操作的结果是否为1并不是正确的方法。例如,6%5是1,但6绝对不是素数。相反,对于每个可疑的N,您应该检查数字X不存在,以至于N%X == 0。
一个非常不理想的实现可能如下所示:
list_prime = []
for i in range(2, user_num):
if all(n % x for x in list_prime):
list_prime.append(i)https://stackoverflow.com/questions/53246320
复制相似问题