繁体   English   中英

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

[英]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!
>>> 

真正帮助我的最重要的事情之一是:

  • 阅读其他代码(和文档!!)
  • 然后在 IDLE 中玩他们的代码
  • 重复上面的<--------(我仍然一直这样做!!)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM