繁体   English   中英

检查某些东西是否是主要的蟒蛇?

[英]checking if something is a prime python?


def prime_check(num):
    if num>1:
        if num == 2:
                return True
        for i in range(2, num+1):
            if ((num%i) == 0):
                print(i)
                return False
            else:
                return True
    else:
        return False
prime_check(99)

当我使用值 99 时它应该为 false 时returns true (如素数)。为什么?

在循环中,只要输入不能被循环中的当前数字整除,您就会返回 true。 因此,在第一次迭代中,当if条件检查 99%2 == 0 时,如果是则返回false否则返回true 这就是为什么它返回True99%2 != 0

只需稍微更改您的代码,就像您使用for....else

if (num >1):
    for i in range(2, num):
        if ((num%i) == 0):
            print(i)
            return False
    else:
        return True

您可以通过使用range(2,math.floor(math.sqrt(num)))减少循环range(2,math.floor(math.sqrt(num)))来改进程序:

for i in range(2,math.floor(math.sqrt(num))):
    //do the same

当 99 进入 for 循环时,它检查是否99%2==0 ,因为它发现99%2!=0 else块被执行,返回true并退出循环而不做进一步的迭代。 您需要更改代码。

为了降低复杂性,您可以进一步使用 sqrt 函数。 你可以参考这个

def prime(num):
if num==1:
    return False
else:
    for i in range(2,num):
        if num%i==0:
            return False
return True

print(prime(17))

暂无
暂无

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

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