测试列表的可分割性并附加if素数



我正在为一个类编写一个简短的片段,该类应该运行给定的数字列表并附加任何素数。不过,现在它正在返回该范围内的所有数字。

我在网上找到了如何做到这一点的例子,但我想自己尝试一下,但我似乎遇到了障碍。。。这是我的代码:

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()
正如他所说,你没有正确地检查素数。
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)

检查模运算的结果是否为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)

最新更新