检查数字是否为质数的函数不给出输出

function to check if a number is prime not giving output

我正在尝试编写一个函数来检查数字是否为质数,并编写了以下函数。但是,尽管该函数在定义它时不会抛出错误,但当 运行 带有输入参数(比如 23)时,它不会执行。已经在内核保持 运行ning 的 Jupyter 笔记本上尝试 运行ning ,以及我收到错误“错误:命令失败:超时 7 python3” 的在线编辑器。无法看到可能的问题,例如除法为 0 etc.Could 请您帮忙?

def prime_check(num):
    
    prime =True
    while prime==True:
        for i in range(2,num):
            if num%i ==0:
                prime=False
                break
    return prime

想一想当您拥有质数时您的代码中会发生什么。它永远不会退出 while 循环。

这可行

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

您可以做很多事情来优化您的代码。改进算法是很好的训练。数学和编码的完美结合。

我们知道3227873423是素数。尝试 运行 你的代码是这样的。

import time
def timer():
    start_time = time.time()
    prime_check(3227873423)
    end_time = time.time()
    return end_time-start_time

timer()

此 returns 您的代码执行测试所需的时间(以秒为单位)。您可以改进您的代码,看看您能以多快的速度获得它。不要忘记测试它 returns 优化后的结果是否正确。

你可以从这里得到用于测试的大质数:https://bigprimes.org/

while prime==True: # if a prime is True this loop will continue forever
    for i in range(2,num):
        if num%i ==0:
            prime=False
            break

我建议将 while prime == True: 部分留在外面