【问题标题】:checking if something is a prime python?检查某物是否是主要蟒蛇?
【发布时间】:2021-07-21 04:38:47
【问题描述】:

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)

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

【问题讨论】:

    标签: python primes


    【解决方案1】:

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

    只需稍微更改您的代码,因为您使用的是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))) 减小循环范围来改进程序:

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

    【讨论】:

    • @NoCompany,如果它回答了您的问题,请考虑accepting它。
    【解决方案2】:

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

    为了降低复杂性,您可以进一步使用 sqrt 函数。 You can refer to this

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-30
      • 2022-01-25
      • 2021-08-04
      • 2019-10-30
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      • 2016-05-19
      相关资源
      最近更新 更多