实现一个函数,该函数将数字列表作为参数,如果该列表仅包含素数,则返回true,否则返回false

时间:2015-01-27 13:36:33

标签: python

有什么想法吗?到目前为止,这只需要一个数字,并说明它是否是素数。

*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'*

4 个答案:

答案 0 :(得分:1)

获取代码并将其转换为返回TrueFalse的函数:

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 ..

rossettacode

采取的直接实施进行了一些修改
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)