需要创建 returns 一个布尔值的函数,"Is this a prime number?"
Need to create function that returns a boolean when asked, "Is this a prime number?"
我正在尝试创建一个函数来测试一个数字是否是质数,然后 return 是真还是假。我是 Python 的极端初学者,所以请让您的代码尽可能简单。到目前为止,这是我尝试过的(只有 return 是正确的):
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 到我们正在测试的数字的平方根的奇数。我们能避免的分裂越多,它就会越快。
最终使用埃拉托色尼筛法将击败这种方法,即使进行了优化。
当您键入此内容时,我相信您的意思如下:
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!
>>>
对我真正有帮助的最重要的事情之一是:
- 阅读其他人的代码(和文档!!)
- 然后在 IDLE 中使用他们的代码
- 重复上面的操作<--------(我仍然一直这样做!!)
我正在尝试创建一个函数来测试一个数字是否是质数,然后 return 是真还是假。我是 Python 的极端初学者,所以请让您的代码尽可能简单。到目前为止,这是我尝试过的(只有 return 是正确的):
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 到我们正在测试的数字的平方根的奇数。我们能避免的分裂越多,它就会越快。
最终使用埃拉托色尼筛法将击败这种方法,即使进行了优化。
当您键入此内容时,我相信您的意思如下:
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!
>>>
对我真正有帮助的最重要的事情之一是:
- 阅读其他人的代码(和文档!!)
- 然后在 IDLE 中使用他们的代码
- 重复上面的操作<--------(我仍然一直这样做!!)