繁体   English   中英

判断一个数是否为素数

[英]Identify whether or not a number 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 ")

逻辑不对

质数(或质数)是大于 1 的自然数,除了 1 和它本身之外没有其他正除数。 大于 1 且不是质数的自然数称为合数。

下面是简单的python代码

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

上面的代码正在检查一个数字是偶数还是奇数。 如果你输入一个质数,例如 17,代码检查 17 是否小于或等于 0。然后它检查17%2 ,它的计算结果为 1,并且不是 0。因此执行 else 块,它打印IS NOT总理

如果输入偶数,则打印IS 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 的初学者,所以让我指出检查代码中数字素性的逻辑不正确,您应该首先仔细阅读素数的定义,当您这样做时,请尝试理解这个小例子它向您展示了如何检查素数:

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")

现在,请注意上面的代码是检查数字是否为质数的最简单但也是最慢的方法之一。 当您对素数的概念足够熟悉时,您应该检查检查素数的最快方法,一些例子可能是费马和米勒拉宾素数测试。 所以,祝你好运质数,你一定会玩得开心;-)

这是不使用任何库的答案

注意:只需要检查直到sqrt(n),解释here

def isPrime(n):
    if (n<=1): return False

    for i in range(2, int(n**(.5))+1):
        if (n%i==0):return False

    return True

暂无
暂无

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

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