如何找到质数

How to Find Prime Number

如何找到素数? 质数是大于一的数,只能被自己和一整除。判断一个数是否为质数的一种方法如下:

->如果数字 < 2,则 return False

->如果数字是2,那么return True -> 对于 i 的每个值,其中 i >=2 且 i < 数字: 如果数字可以被 i 整除,则 return False ->return 正确

我当前的代码:

def is_prime(number):
    if number == 2:
        return True
    elif number < 2:
        return False
    else:
        for i in range(2, number):
            if number % i == 0:
                return False
            else:
                return True
def main():
    print(is_prmie(1))
    print(is_prmie(4))
    print(is_prmie(7))

一些语法问题我不知道如何解决。 有人可以帮忙吗? 谢谢TA!

您需要调用 main() 并正确写入 is_prime()

def is_prime(number):
if number == 2:
    return True
elif number < 2:
    return False
else:
    for i in range(2, number):
        if number % i == 0:
            return False
        else:
            return True
def main():
    print(is_prime(1))
    print(is_prime(4))
    print(is_prime(7))
main()

方法调用时 is_prime 的拼写错误。另外,您最后还没有调用 main 方法。

小改进:

for i in range(2, number):

这一行可以如下所示,因为我们不需要检查数字的一半后的整除性:

for i in range(2, (number/2)):

例如为了检查 24 是否为质数,我们最多只需要检查 12,因为它永远不会被大于 12 的数整除。

我建议如下:

from math import sqrt

def is_prime(x):
  if x < 2:
    return False

  if x % 2 == 0:
    return x == 2

  i = 3
  while i <= sqrt(x):
    if x % i == 0:
      return False
    i += 2

  return True

注意事项:

  • 唯一的偶素数是 2。循环仅限于奇数。
  • 只需要检验等于并包括平方根的因子。因为如果 x = y * z 且 y ≥ sqrt(x) 则 z ≤ sqrt(x)
  • 循环中只有一个 return 语句。您可以在非素数时提前退出,但您必须完成循环以确保数字为素数。
        <?php

        // PHP code to check wether a number is prime or Not 
        // function to check the number is Prime or Not 
        function primeCheck($number){ 

            if ($number == 1 || $number == 2 || $number % 2 !== 0) {
                 echo "Prime"; 
            }

            else if ($number % 2 == 0) 
            {
                echo "Not Prime"; 
            }
          } 

        echo primeCheck(5);