有什么想法吗?到目前为止,这只需要一个数字,并说明它是否是素数。
*a = input('enter a number: ')
s = 0
if a == 1:
print a, 'is a prime number'
else :
for i in range (2, a ):
if a%i == 0:
print a,' is not a prime number'
s = 'true'
break
if s == 0 : print a,' is a prime number'*
答案 0 :(得分:1)
获取代码并将其转换为返回True
或False
的函数:
def is_prime(a):
a = input('enter a number: ')
s = 0
if a == 1:
print a, 'is a prime number'
else :
for i in range (2, a ):
if a%i == 0:
return False
if s == 0 : return True
然后创建一个新函数,该函数获取列表并使用is_prime
(或您决定调用它的任何函数)函数迭代它:
def all_prime(list_of_nums):
for num in list_of_nums:
if not is_prime(num):
return False
else:
return True
答案 1 :(得分:0)
可能最好的方法是使用一些素性测试来测试列表中的每个数字。 Rabin-Miller算法就是这样一种测试。您可以在Wikipedia找到详细信息。
答案 2 :(得分:0)
这是您在简单版本中可能需要的代码。输入格式为1,3,4,5,6 ...等的列表
import math
a = input('enter a list of numbers seperated by commas: ')
flag_primes = False
primes = []
def is_prime(n):
if n % 2 == 0 and n > 2:
return False
return all(n % i for i in range(3, int(math.sqrt(n)) + 1, 2))
for num in a:
if is_prime(num):
flag_primes = True
primes.append(num)
if flag_primes:
print "The list contains the following primes:", primes
else:
print "No primes found in list!"
答案 3 :(得分:0)
如果列表的最大值合理有限,您可以构建Sieve of Erathostenes ..
采取的直接实施进行了一些修改def isprime_upto(limit):
is_prime = [False] * 2 + [True] * (limit - 1)
for n in range(int(limit**0.5 + 1.5)): # stop at ``sqrt(limit)``
if is_prime[n]:
for i in range(n*n, limit+1, n):
is_prime[i] = False
return is_prime
然后,您可以检查列表中的每个元素是否具有类似以下内容的素数:
def all_primes(list):
sieve = isprime_upto(max(list))
is_prime = [sieve[x] for x in list]
return all(is_prime)