一行中的isPrime函数

时间:2019-04-24 10:26:45

标签: python python-3.x

下午好。我需要在一行中写数字,并在一行中也打印结果。我需要做什么来解决此代码?目前,代码只能使用一个数字。

def test_prime(n):
    if (n==1):
        return False
    elif (n==2):
        return True;
    else:
        for x in range(2,n):
            if(n % x==0):
                return False
        return True   

5 个答案:

答案 0 :(得分:1)

如果您有这样的数字列表:

numbers = [3,4,5]

您可以使用map()test_prime()函数应用于列表中的每个值:

isprime = list(map(test_prime,numbers))

然后将结果打印在没有逗号/括号的一行上:

>> print(*isprime, sep = ' ')
True False True

编辑:由于您提到要在一行中输入数字而没有逗号,因此可以执行以下操作:

>>> numbers = input().split()
1 2 3 4 5
>>> numbers
['1', '2', '3', '4', '5']

答案 1 :(得分:1)

is_prime = lambda n: not any(n % i == 0 for i in range(2, n))
print([f'{i}: {is_prime(i)}' for i in range(1, 100)])

注意

  • any很懒,除非有需要,否则不会迭代整个范围。
  • 只要您关心速度,就可以将范围更改为range(2, n**0.5)

答案 2 :(得分:0)

您需要编写函数is_prime,该函数将为您输入的字符串中的每个数字调用函数test_prime,计算其是否为质数,然后返回结果字符串。

def test_prime(n):
    if (n==1):
        return False
    elif (n==2):
        return True;
    else:
        for x in range(2,n):
            if(n % x==0):
                return False
        return True  

def is_prime(s):
    #Create list of numbers
    nums = [int(n) for n in s.split()]
    output = []
    #Call test_prime for each number
    for n in nums:
        output.append(test_prime(n))
    #Make a string out of results
    result = ' '.join([str(op) for op in output ])
    return result

s = input("Input numbers>>")
print(is_prime(s))

您的输出将是

Input numbers>>3 4 5
True False True

答案 3 :(得分:0)

仅使用一行即可打印

for i in range(10):
    print(test_prime(i), end=' ')

注意要打印的end关键字参数,默认为'\ n'。传递其他字符串将防止打印后出现换行符。另请参见此处:print()

您还可以生成一个列表,然后使用str.join(),看起来像这样:

results = [test_prime(i) for i in range(10)]
print(', '.join(results))

答案 4 :(得分:0)

>>> [print(i,test_prime(i),end=', ') for i in (1,2,3,4,5,6,10,100,1000,1013)]
1 False, 2 True, 3 True, 4 False, 5 True, 6 False, 10 False, 100 False, 1000 False, 1013 True,