Python 质数函数问题
Python prime function problems
我对python很陌生;我两天前才开始。在网上看了一些设计后,我尝试使用这个函数来判断一个数是否为质数:
def isprime(n):
if n == 1:
print("1 is not a prime.")
if n == 2:
print("2 is a prime number.")
for x in range(2, int(n)):
if n%x == 0:
print(n, "is a composite number.")
break
else:
print(n, "is a prime number.")
break
isprime(int(input("Enter a number.")))
isprime(int(input("Enter a number.")))
这样我就可以 运行 文件作为 .py。
然而,虽然它 运行 没有任何错误,但它 returns 误报。例如,它声明 45 是质数。我做错了什么?
问题出在您的代码逻辑上。缩进在 Python 中起着重要作用。如果像这样更改代码,它会很好用:
def isprime(n):
if n == 1:
print("1 is not a prime.")
if n == 2:
print("2 is a prime number.")
prime = True
for x in range(2, int(n)):
if n%x == 0:
print(n, "is a composite number.")
prime = False
break
if prime:
print(n, "is a prime number.")
您将在第一次迭代后中止 for x in range
循环的迭代,因为 if
语句的两个分支都包含 break
.
删除 else
分支并使用 for...else
结构:
def isprime(n):
if n == 1:
print("1 is not a prime.")
if n == 2:
print("2 is a prime number.")
for x in range(2, int(n)):
if n%x == 0:
print(n, "is a composite number.")
break
else:
print(n, "is a prime number.")
我对python很陌生;我两天前才开始。在网上看了一些设计后,我尝试使用这个函数来判断一个数是否为质数:
def isprime(n):
if n == 1:
print("1 is not a prime.")
if n == 2:
print("2 is a prime number.")
for x in range(2, int(n)):
if n%x == 0:
print(n, "is a composite number.")
break
else:
print(n, "is a prime number.")
break
isprime(int(input("Enter a number.")))
isprime(int(input("Enter a number.")))
这样我就可以 运行 文件作为 .py。
然而,虽然它 运行 没有任何错误,但它 returns 误报。例如,它声明 45 是质数。我做错了什么?
问题出在您的代码逻辑上。缩进在 Python 中起着重要作用。如果像这样更改代码,它会很好用:
def isprime(n):
if n == 1:
print("1 is not a prime.")
if n == 2:
print("2 is a prime number.")
prime = True
for x in range(2, int(n)):
if n%x == 0:
print(n, "is a composite number.")
prime = False
break
if prime:
print(n, "is a prime number.")
您将在第一次迭代后中止 for x in range
循环的迭代,因为 if
语句的两个分支都包含 break
.
删除 else
分支并使用 for...else
结构:
def isprime(n):
if n == 1:
print("1 is not a prime.")
if n == 2:
print("2 is a prime number.")
for x in range(2, int(n)):
if n%x == 0:
print(n, "is a composite number.")
break
else:
print(n, "is a prime number.")