Python 中的质数

Prime number in Python

#Write your code below this line 
def prime_checker(number):
    for num in range (2, number):
        if num % number == 0:
            print("It is not a prime number")
        else:
            print("It is a prime number")


#Write your code above this line 
    
#Do NOT change any of the code below
n = int(input("Check this number: "))
prime_checker(number=n)

如何打印一个数字为素数或不止一次的文本?

修复

number % num == 0 而不是 num % number == 0

当你发现一个数不能整除它时,这个数就不是质数,但只有当你测试了所有的数并且 none 将它整除时才会如此

使用for/else构造,如果没有使用break则进入else

def prime_checker(number):
    for num in range(2, number):
        if number % num == 0:
            print("It is not a prime number")
            break
    else:
        print("It is a prime number")

请注意,这只能解决您的问题,但这不是检查数字是否为质数的最佳方法,至少,结束范围为数字的平方根,并直接验证除以小数像 2,3,5,7

这样的数字

首先,通过

进行稍微更有效的质数检查
  • 一直到数字的平方
  • 步进 2
import math


def is_prime(n: int) -> bool:
    if n in (2, 3, 5):
        return True
    if n < 2 or n % 2 == 0:
        return False
    for i in range(3, math.ceil(math.sqrt(n)), 2):
        if n % i == 0:
            return False
    return True

现在您可以将该函数包装在您的函数中

def prime_checker(n: int):
    msg = "%d is prime" if is_prime(n) else "%d is not prime"
    print(msg % n)


prime_checker(11)
# 11 is prime

您的代码几乎没有错误。我修改了。

def prime_checker(number):
    for num in range(2, number):
        if number % num == 0:
            print('Not prime')
            return
    print('Prime number')
# Write your code above this line 

# Do NOT change any of the code below
n = int(input("Check this number: "))
prime_checker(number=n)

for循环是检查从2开始的数是否是数的因数

我认为检查一个数是否为质数是很好的

def is_prime(n):
    st = "prime" #  being prime status

    for i in range(2,n):
        if n % i == 0: # if number is prime
            st = "not prime"
            break;


    return st 



n = int(input("enter n:  "))
print (is_prime(n))

您只需要更改代码的末尾
除了这些行之外,您的函数是正确的:

if num % number == 0:
    print("It is not a prime number")
else:
    print("It is a prime number") 

您应该将这些更改为:

st = "Prime"
if number % num == 0:
    st = "not prime"
    return st