Python 素数检查器
Python prime checker
我最近开始学习 python(我的意思是,发帖时是 35 分钟前...)并且我写了一些东西,例如平方根生成器、阶乘生成器、斐波那契数生成器、素数检查器等。在我编写素数检查器之后,我想我会尝试修改它,而不是检查指定范围内的每个数字,它会接受输入并检查一个具体的。
免责声明:如果我在 Python 方面做得更好,那么我只会检查最大为 sqrt(p) 的数字,并且我会添加一个选项来检查它是否为偶数而不是 2 然后它会自动 returns 这不是素数,但让我走在我 运行 之前! :)
代码:
p = input("Enter a potential prime.")
for n in range (2,p):
if p % n == 0:
print(p, "equals", n, "x", p//n, "so it isn't a prime number")
break
else:
print(p, "is a prime number.")
它适用于 p = 2 但仅此而已...
注意 - 显然代码相应地缩进了,只是这里的格式不正确。
我看到了一些错误:您需要将用户输入转换为 int,此外您还需要将 else:
子句移至 for 循环下方而不是 if 语句下方。以下代码可满足您的需求:
p = int(input("Enter a potential prime."))
for n in range (2,p):
if p % n == 0:
print(p, "equals", n, "x", p//n, "so it isn't a prime number")
break
else:
print(p, "is a prime number.")
是的,这是正确的 - else:
不是 if 语句的一部分,它是 for 循环的一部分。此语法意味着如果您的 for 循环运行到中断,那么它会像往常一样中断。如果没有 break,则执行 else:
子句。因此,它将进行基本的试验除法,如果数字通过测试,它将只打印一次 "is a prime number"。您发布的代码将为循环的每次迭代打印 "is a prime number"。
编辑:针对您的后续问题尝试使用以下代码。
def primeChecker():
# Function that keeps prompting for input, and checks if it's prime. Enter "quit"
# to exit:
user_input = input("Enter a potential prime (or type 'quit' to exit): ")
if user_input == 'quit':
return
else:
p = int(user_input)
# Trial division algorithm:
for n in range (2,p):
if p % n == 0:
print(p, "equals", n, "x", p//n, "so it isn't a prime number")
break
else:
print(p, "is a prime number.")
# Recursive function call:
primeChecker()
# Start by calling the main function:
primeChecker()
我最近开始学习 python(我的意思是,发帖时是 35 分钟前...)并且我写了一些东西,例如平方根生成器、阶乘生成器、斐波那契数生成器、素数检查器等。在我编写素数检查器之后,我想我会尝试修改它,而不是检查指定范围内的每个数字,它会接受输入并检查一个具体的。
免责声明:如果我在 Python 方面做得更好,那么我只会检查最大为 sqrt(p) 的数字,并且我会添加一个选项来检查它是否为偶数而不是 2 然后它会自动 returns 这不是素数,但让我走在我 运行 之前! :)
代码:
p = input("Enter a potential prime.")
for n in range (2,p):
if p % n == 0:
print(p, "equals", n, "x", p//n, "so it isn't a prime number")
break
else:
print(p, "is a prime number.")
它适用于 p = 2 但仅此而已...
注意 - 显然代码相应地缩进了,只是这里的格式不正确。
我看到了一些错误:您需要将用户输入转换为 int,此外您还需要将 else:
子句移至 for 循环下方而不是 if 语句下方。以下代码可满足您的需求:
p = int(input("Enter a potential prime."))
for n in range (2,p):
if p % n == 0:
print(p, "equals", n, "x", p//n, "so it isn't a prime number")
break
else:
print(p, "is a prime number.")
是的,这是正确的 - else:
不是 if 语句的一部分,它是 for 循环的一部分。此语法意味着如果您的 for 循环运行到中断,那么它会像往常一样中断。如果没有 break,则执行 else:
子句。因此,它将进行基本的试验除法,如果数字通过测试,它将只打印一次 "is a prime number"。您发布的代码将为循环的每次迭代打印 "is a prime number"。
编辑:针对您的后续问题尝试使用以下代码。
def primeChecker():
# Function that keeps prompting for input, and checks if it's prime. Enter "quit"
# to exit:
user_input = input("Enter a potential prime (or type 'quit' to exit): ")
if user_input == 'quit':
return
else:
p = int(user_input)
# Trial division algorithm:
for n in range (2,p):
if p % n == 0:
print(p, "equals", n, "x", p//n, "so it isn't a prime number")
break
else:
print(p, "is a prime number.")
# Recursive function call:
primeChecker()
# Start by calling the main function:
primeChecker()