需要创建一个在被问到“这是素数吗?”时返回布尔值的函数

问题描述

我正在尝试创建一个函数,该函数将测试数字是否为质数,然后返回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!
>>> 

对我来说最重要的一件事情是:

  • 阅读其他代码(和文档!)
  • 然后在IDLE中玩他们的代码
  • 重复上述