|  | 
 
 发表于 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
 | 
 |