识别一个数字是否为prim

2024-05-13 01:29:09 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的代码持续显示素数的“is not prime”和非素数的“is prime”。我做错什么了?你知道吗

quuN = int(input("ENTER NUMBER : "))

quuM = 2

if (quuN <= 0) :

    print("ENTER NON-NEGATIVE NUMBER PLEASE")


elif (quuN % quuM == 0) :

    print(" IS PRIME " )

else : 

    print("IS NOT PRIME ")

Tags: 代码numberinputifisnotprime素数
3条回答

上面的代码正在检查一个数字是偶数还是奇数。如果输入素数,例如17,代码将检查17是否小于或等于0。然后检查17%2,该值等于1,而不是0。因此,执行else块,打印的不是PRIME。你知道吗

如果输入偶数,则打印为素数。

这段代码检查素数。你知道吗

def is_prime(n):
    import math
    for i in range(2, int(math.sqrt(n))+1):
        if n % i == 0:
            return False
    return True

我假设您是python的初学者,那么让我指出检查代码中数字素数的逻辑是不正确的,您应该首先仔细阅读primes numbers的定义,当您这样做时,请尝试理解这个演示如何检查素数的小示例:

import math

def is_prime_naive(number):
    if number == 2:
       return True
    if number % 2 == 0:
        return False

    i = 3
    sqrt_number = math.sqrt(number)

    while i <= sqrt_number:
        if number % i == 0:
            return False
        i = i+2

    return True

for i in range(2,101):
    print "{0} {1} prime".format(i,"is" if is_prime_naive(i) else "is not")

现在,请注意上面的代码是检查一个数是否为素数的最简单也是最慢的方法之一。当你对素数的概念足够熟悉的时候,你应该寻找最快的方法来检查素数,一些例子可以是Fermat和Miller-Rabin素数测试。所以,祝素数好运,你一定会玩得很开心;-)

逻辑不正确

素数(或素数)是一个大于1的自然数,除1和它本身外,没有其他正因子。大于1的自然数不是素数,称为复合数。你知道吗

下面是简单的python代码

def is_prime(n):
    for i in range(3, n):
        if n % i == 0:
            return False
    return True

相关问题 更多 >