如何正确解释我的python代码来识别素数



我是初学者。我编写了以下代码来识别素数

import math
n = int(input("Enter any natural number:"))
for k in range (2, n):
x = math.floor(n / k)
if x == n / k:
print("n is not a prime")
else:
print("n is a prime")

当我取n=23时,我得到的输出如下:

Enter any natural number:23
n is a prime
n is a prime
n is a prime
n is a prime
n is a prime
n is a prime
n is a prime
n is a prime
n is a prime
n is a prime
n is a prime
n is a prime
n is a prime
n is a prime
n is a prime
n is a prime
n is a prime
n is a prime
n is a prime
n is a prime
n is a prime

(项目完成)

与其得到所有这些行,我能不能得到一行来表示如果0如果范围内的k能除n,反之亦然?

使用如下代码:

n=int(input("Enter any natural number:"))
n_p = False
for k in range (2,n):
if n % k == 0:
n_p = True
break
if n_p:
print("n is not a prime")
else:
print("n is a prime")

如果n除以k,则n_p变为True并打印"n不是素数"。否则,n_p仍然为False,并输出"n是素数">

一种方法是创建一个函数来检查它是否是素数…!

import math
def check_prime_number(n):
for k in range(2,n):
x=math.floor(n/k)
if(x==n/k):
return "n is not a prime"  
return "n is a prime"

n=int(input("Enter any natural number:"))
print(check_prime_number(n))

return用于结束函数调用的执行。。我们知道,如果任何数字b/w[2,n-1]能整除数字[n],那么它就不是素数,所以…在任何时候,如果满足if条件,则打印n不是素数并结束函数的执行。如果if条件直到最后才满足,我们可以说它是一个素数,所以在for循环结束后,我们写n是一个素数,函数结束。

输出: -

Enter any natural number:23
n is a prime

例如:

n=int(input("Enter any natural number:"))
for k in range (2,n):
if not n % k:
print("n is not a prime")
break
else:
print("n is a prime")

你得到这个是因为你的print语句在for循环中。要解决这个问题,您需要在for循环之外使用if else语句。所以你的最终代码应该是:

import math
n=int(input("Enter any natural number:"))
for k in range (2,n):
x=math.floor(n/k)

if(x==n/k):
print("n is not a prime")
else:
print("n is a prime")

或者,你可以不使用数学库

n = int(input("Check this number: "))
is_prime= True
for N in range(2,n):
if n%N ==0:
is_prime= False
if is_prime:
print("It's a prime number.")
else:
print("It's not a prime number.")

最新更新