需要创建 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 中使用他们的代码
  • 重复上面的操作<--------(我仍然一直这样做!!)