编写一个程序来判断一个数是否为素数

问题描述 投票:0回答:2

我正在尝试编写一个处理素数的程序。

素数是只能被自身和 1 整除的数。例如,数字 5 是素数,因为它只能被 1 和 5 整除。但是数字 6 不是素数,因为它可以被除以 1、2、3 和 6。

我的任务包括:

  • 编写一个布尔函数
    named is_prime()
    ,它接受一个整数作为参数,如果参数是素数则返回 true,否则返回 false。
  • 在程序中使用该功能,提示用户输入数字,然后显示一条消息,指示该数字是否为质数。
def main():
    #decribe the program
    print ("This is a program to see if a number is prime")
    #ask the user for a number
    number = int (input ("Enter a number to see if it prime: "))
    #see if the number is prime
    result = is_prime (number)
    print ("The number", number, "is", result)

def is_prime(number): 
    while number < 0:
        print ("The number must be greater than 1")
        number = int (input("Enter a valid number: "))
    
    for x in range (1, number + 1):
        if (number % x) == 0:
            return False
        else: 
            return True
 
main()

在我的 for 语句中,我遗漏了一些东西,并且很难弄清楚我做错了什么。我错过了什么步骤?

python input primes
2个回答
0
投票

is_prime(number)
内检查的数字范围不能包括数字
(1, number)
,因为任何数字都可以被它们整除。此外,如果没有找到除数,则只能在
True
的末尾返回
for-loop

def is_prime(number): 
    ...

    for x in range (2, number):
        if (number % x) == 0:
            return False
     return True

为了获得最佳的执行速度,可以证明你只需要检查数字直到

sqrt(number)

from math import sqrt, ceil
def is_prime(number): 
    ...

    for x in range(2, min(number,1+ceil(sqrt(number)))):
        if (number % x) == 0:
            return False
    return True

0
投票

尝试使用此代码来实现该功能

is_prime()

def is_prime(number): 
    while number < 1:
        print ("The number must be greater than 1")
        number = int (input("Enter a valid number: "))
    
    for x in range (2, number):
        if (number % x) == 0:
            return False
    return True

对我的更正的评论:

  • 你必须排除
    1
    number
    所以
    range(2, number)
    而不是
    range (1, number + 1)
  • while number < 1:
    while number < 0:
  • 在函数末尾,您必须包含指令
    return True
    ,因为如果循环
    for
    到达末尾,则意味着
    number
    不能被区间 [2,number) 中的任何 x 值整除。
    )
    括号表示 x 必须停在
    number-1
© www.soinside.com 2019 - 2024. All rights reserved.