在这里遇到麻烦了。
其实,算法已设计好,在一般范围内验证都OK的。
但偏偏题目是一个超大的数,600851475143(对于C的整数而言)
看了STACKOVERFLOW的,改成不报错可版本,可能笔记本运算太慢,还是出不了结果。
http://stackoverflow.com/questions/9816603/range-is-too-large-python/9833011
后来在网上找了个C++版本,编译的就是快,一会就搞出来了。
http://blog.csdn.net/ll_0520/article/details/7524468
惭愧~~
def range(stop): i = 0 while i < stop: yield i i += 1 ''' def isPrime(n): isPrime = True for i in xrange(2,n/2): if n % i == 0: isPrime = False return isPrime def LargestPF(num): i = 1 PFL = 1 for i in xrange(2,num/2): if num % i == 0: if isPrime(i) == True: if i > PFL: PFL = i return PFL ''' def isPrime(n): isPrime = True for i in xrange(2,n/2): if n % i == 0: isPrime = False return isPrime def LargestPF(num): i = 1 PFL = 1 for i in range(num/2): if i == 0: continue if num % i == 0: if isPrime(i) == True: if i > PFL: PFL = i return PFL print isPrime(13195) print LargestPF(13195)
时间: 2024-09-09 22:44:44