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
我对编程是个超级新手,只是在学习基础知识。我基于我在维基百科上找到的质数测试。
我想它起作用了。这可能很麻烦,但似乎是可行的。
发布于 2018-07-06 04:20:56
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
发布于 2018-07-06 04:29:54
您的逻辑很好,但是您可以将sqrt
用于平方根,如果您提供了一个TypeError
参数,那么range
函数也会引发一个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')
发布于 2018-07-06 05:27:10
我想我让它工作了,而不是作为一个函数。
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)
https://stackoverflow.com/questions/51199180
复制相似问题