def prime_checker(num):
if num <=1:
print('Not Prime')
elif num == 2:
print('Prime')
else:
for i in (2, (num ** (1/2))):
if num%i == 0:
print('Not Prime')
break
else:
print('Prime')
break
我是编码的超级新手,只是学习基础知识。我将其基于我在Wikipedia上进行的素数测试。
我认为它可行。这可能很麻烦,但似乎可以正常工作。
答案 0 :(得分:1)
for
循环的迭代器应为整数范围,而不仅仅是2的元组和数字的平方根。使用range
时,请务必先使用int
将边界转换为整数。而且,如果该数字不能除以循环中的任何数字,则仅被视为质数,因此,您应仅在循环结束后声明质数,否则循环应声明“非质数”并返回。>
def prime_checker(num):
if num <=1:
print('Not Prime')
elif num == 2:
print('Prime')
else:
for i in range(2, int(num ** (1/2)) + 1):
if num%i == 0:
print('Not Prime')
return
print('Prime')
prime_checker(63)
prime_checker(31)
prime_checker(9)
这将输出:
Not Prime
Prime
Not Prime
答案 1 :(得分:1)
您的逻辑很好,但是您可以使用sqrt
来表示平方根,
如果您提供一个range
参数,则TypeError
函数也会引发一个float
(通常在使用平方根时)。
有效的实现方式是:
from math import sqrt
def prime_checker(num):
is_prime = True
if num <= 1 or not isinstance(num, int):
is_prime = False
elif num == 2:
pass
else:
for i in range(2, int(sqrt(num)) + 1):
if num % i == 0:
is_prime = False
break
if is_prime:
print('Prime')
else:
print('Not Prime')
答案 2 :(得分:0)
我认为我无法将其用作功能。
from math import sqrt
print('This script will check if your input is a prime number.')
num = int(input('Number: '))
if num <=1:
print('Not Prime')
elif num == 2 or num ==3:
print('Prime')
else:
for i in range(2, int(sqrt(num)) + 1):
if num%i == 0:
a = 'Not Prime'
break
else:
a = 'Prime'
print(a)