【发布时间】:2019-04-26 01:22:52
【问题描述】:
我写这个是为了确定任何给定数字的最大素数。它适用于少于 9 位的数字,但当位数超过 9 时,它的行为方式不确定。如何优化它?
这个函数判断一个数是否是素数
def is_prime(x):
u = 1
i = 2
while i < x:
if x%i == 0:
u = 0
break
else:
i = i+1
return u
这个函数判断一个数是否是另一个数的质因数
def detprime(x,y):
if x%y == 0:
if (is_prime(y)):
return 1
else:
return 0
else:
return 0
这部分检查给定数的所有质因数,将它们存储在一个列表中,并返回最大值
def functionFinal(x):
import math
factors = []
y = x//2
for i in range(1,y):
if detprime(x,i) == 1:
factors.append(i)
y = len(factors)
print(factors[y-1])
import time
start_time = time.process_time()
print("Enter a number")
num = int(input())
functionFinal(num)
打印(time.process_time()-start_time)
【问题讨论】:
-
只检查到
x的平方根。 -
你可以用this answer中解释的功能来固定你的素数检查器