[英]Need to create function that returns a boolean when asked, "Is this a prime number?"
我正在尝试创建一个函数,该函数将测试一个数字是否为素数,然后返回 True 或 False。 我是 Python 的极端初学者,所以请让您的代码尽可能简单。 这是我到目前为止所尝试的(仅返回 True):
def isPrime(x):
x = int(x)
for i in range(2, x):
if(x % i == 0):
x == False
else:
x == True
return x
print(isPrime(input("Enter a prime number.")))
你几乎成功了,只需要像这样改变它:
def isPrime(x):
x = int(x)
for i in range(2, x):
if x % i == 0:
return False
return x >= 2
print(isPrime(input("Enter a prime number.")))
编辑:正如@MarkRansom 所指出的,当i
变量达到x
平方根时,可以安全地假设它没有更多可能的除数:
from math import sqrt
def isPrime(x):
x = int(x)
for i in range(2, int(sqrt(x)) + 1):
...
我相信你的程序最简单的形式是这样的:
def isPrime(x):
if x > 1:
for i in range(2, x):
if x % i == 0:
return False
return True
return False
print(isPrime(int(input("Enter a number: "))))
但这并不像它应有的那样有效。 为了做得更好,我们将 2(和所有偶数)视为一种特殊情况,只允许除数覆盖从 3 到我们正在测试的数字的平方根的奇数。 我们可以避免的分裂越多,它就越快。
最终使用 Eratosthenes 筛将击败这种方法,即使进行了优化。
当您输入此内容时,我相信您的意思如下:
def isPrime(x):
x = int(x)
for i in range(2, x):
if (x % i) == 0:
x = False
else:
x = True
return x
print(isPrime(input("Enter a prime number.")))
## Which runs as follows in python IDLE:
>>> def isPrime(x):
x = int(x)
for i in range(2, x):
if (x % i) == 0:
x = False
else:
x = True
return x
>>> print(isPrime(input("Enter a prime number.")))
Enter a prime number.11
True
>>> print(isPrime(input("Enter a prime number.")))
Enter a prime number.100
False
我知道当我开始时,我犯了很多打字错误。 通过重读我的代码和大量练习,我慢慢变得更好了。
这是我如何写出你的任务。
def isPrime(h):
h = int(h)
test = None
for x in range(2, h):
if (h%x) == 0:
test = False
print(f"{test}, the number {h} is not a prime!")
break
else:
test = True
print(f"{test}ly, the number {h} is a prime!")
## Then I'll run the call to the function in python IDLE as:
>>>
>>> isPrime(input("Enter a number.\n"))
Enter a number.
11
Truely, the number 11 is a prime!
>>>
>>> isPrime(input("Enter a number.\n"))
Enter a number.
110
False, the number 110 is not a prime!
>>>
真正帮助我的最重要的事情之一是:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.