如何查找素数

时间:2017-08-01 23:59:54

标签: syntax python-3.6

如何查找素数? 素数是大于1的数字,只能由它们自己和1来整除。确定数字是否为素数的一种方法如下:

- >如果数字< 2,然后返回False

- &gt;如果数字为2,则返回True - &gt;对于i的每个值,其中i> = 2且i <1。数:     如果该数字可被i整除,则返回False - &gt;返回True

我目前的代码:

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!

4 个答案:

答案 0 :(得分:1)

我建议如下:

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语句。你可以提前退出非素数,但你必须完成循环以确保数字是素数。

答案 1 :(得分:0)

您需要致电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()

答案 2 :(得分:0)

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

小改进:

for i in range(2, number):

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

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

e.g。对于检查24是否为素数,我们需要检查最多12,因为它永远不会被大于12的数字整除。

答案 3 :(得分:0)

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