|
发表于 2018-6-30 15:40:26
|
显示全部楼层
from math import sqrt
from time import time
# 素数判断函数,给一个值,如果返回True,则表示是素数,False表示为非素数
def is_prime(n):
if n > 1:
if n == 2:
return True
if n % 2 == 0:
return False
for i in range(3, int(sqrt(n))+1, 2):
if n % i == 0:
return False
# for循环结束后,如无False,则返回True
return True
# 如 if n > 1 不成立,则返回False
return False
# 取得给定值的所有乘数因子
def factor(n):
L = []
for i in range(1, int(sqrt(n))+2):
if n%i == 0:
L.append(i)
L.append(n/i)
# set 去除相同的因子
return set(L)
start_time = time()
memb = list(filter((is_prime), factor(600851475143)))
memb.sort()
end_time = time()
print(memb)
print('Running time = ', end_time - start_time)
print('Largest prime factor is ', memb[-1])
>>>
[71, 839, 1471, 6857]
Running time = 0.113600015640
Largest prime factor is 6857 |
|