[英]Checking for prime numbers: Any number is prime?
您好亲爱的社区,
我被困在一个非常简单的事情上,我想有时候您只是出于例外。 无论如何,我写了这个来检查素数:
num = int(input(""))
if num > 1:
for i in range(2, num-1):
if (num % i) == 0:
print(num, "is no Primenumber")
break
else:
print(i, "PRIME!!!")
(原始代码无法打印任何内容,但是我遇到了麻烦,因此我将其重写以用于调试)
无论如何,它可以正确识别非质数,但可以打印出质数,例如7:
7
2 PRIME!!!
3 PRIME!!!
4 PRIME!!!
5 PRIME!!!
如果您担心较大数字的性能,最好在number flooring division 2
上使用square root
。 任何大于平方根的因数也将具有小于1的因数。
这是一个常见的解决方案:
def check_for_prime(p_in):
is_prime = True
for n in range(2, int(p_in ** 0.5) + 1):
if p_in % n == 0:
is_prime = False
break
return is_prime
num = int(input(""))
if check_for_prime(num):
print(f'{num} is prime')
else:
print(f'{num} is not prime')
不是最注重性能的人,但是可以完成工作并且很简单。
n = input("Enter a number to check if it is prime [returns True or False]: ")
n = int(n)
if n < 2:
quit()
if all(n % i for i in range(2, n)):
print(n, "PRIME!!!")
使用以下逻辑查找数字是否为质数。 这适用于python,因为for循环还有一个else块,当执行过程中循环未中断时,该块将执行,这意味着数字为质数。
if num > 1:
# Iterate from 2 to n / 2
for i in range(2, num//2):
# If num is divisible by any number between
# 2 and n / 2, it is not prime
if (num % i) == 0:
print(num, "is not a prime number")
break
else:
print(num, "is a prime number")
else:
print(num, "is not a prime number")
如果没有第三方模块,则可以通过以下方式轻松执行:
def is_prime(number):
return all(number % n for n in range(2, number))
这样,您检查:
number % n
给出0,则意味着它是一个倍数,因此它不能是素数,您将立即得到结果
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.