验证输入数字是否为质数

Ale*_*Ghi 0 python primes numbers python-3.x

尝试编写一个程序来检查一个数字是否为素数。写了下面的代码,但不明白为什么我有两行输出:

num = int(input("Provide number to check if prime: "))
if num <=1:
    print("Invalid choice, try again")
    num = int(input("Provide number to check if prime: "))

for i in range(2,num):
    if num% i ==0:
        print("Number is not prime")
        break
    if num %i !=0:
        print("Number is prime")
Run Code Online (Sandbox Code Playgroud)

我的输出是:

Provide number to check if prime: 15
Number is prime
Number is not prime
Run Code Online (Sandbox Code Playgroud)

Raj*_*osh 5

sympy.isprime () 是SymPy模块下的内置函数可用于检查可能的素数。它是一个直接函数,如果要检查的数字是质数则返回 True,如果要检查的数字不是质数则返回 False。

>>> import simpy
  
>>> sympy.isprime(8)

False

>>> sympy.isprime(11)

True

Run Code Online (Sandbox Code Playgroud)

或者定义一个像这样的函数

>>> def isPrime(k):
    
    # 1 is not prime number
    if k==1:
        return False

    # 2, 3 are prime
    if k==2 or k==3: 
        return True

    # even numbers are not prime
    if k%2==0: 
        return False

    # check all numbers till square root of the number , 
    # if the division results in remainder 0
    # (skip 2 since we dont want to divide by even numbers)

    for i in range(3, int(k**0.5)+1, 2):
        if k%i==0:
            return False

    return True

>>> print(isPrime(13))

True

>>> print(isPrime(18))

False

Run Code Online (Sandbox Code Playgroud)