找到数字中最大的素数[Python]

时间:2014-10-02 23:45:48

标签: python primes prime-factoring

def f(num):
    return num

number = f(13195)
list = [ x for x in range(number) if ((x!= 0 and x!=1) and number%x ==0)] #x (the multiplication factor) should not be 0 or 1
max = max(list)
for num in range(1,max) :
    if all(num%i!=0 for i in range(2,num)):
       if num in list:
           print num

您好,此代码用于查找数字的最大素数。 我尝试过使用f(13195)并且我找到了正确的数字,但是我在范围内得到了太多项目的错误,还有其他方法可以解决这个问题吗?

但是当我输入600851475143时,它表示范围太多了,但是,这是否意味着我不应该使用范围?提前谢谢!

2 个答案:

答案 0 :(得分:2)

您可以改为使用xrange(number)

然而,对于大数字来说,循环将花费很长时间

或者使用Python3,其中range的行为类似于xrange

答案 1 :(得分:0)

import math
def f(num):
    return num

number = f(600851475143)
list = [ x for x in xrange(int(math.sqrt(number))) if ((x!= 0 and x!=1) and number%x ==0)] 
max = max(list)
for num in xrange(1,max) :
    if all(num%i!=0 for i in xrange(2,num)):
       if num in list: # if sth is true it runs...
           print num

我想通了,我们需要将范围更改为数字的平方根,我更改了算法,而不是尝试在python中找到比xrange更大的范围

请在此处查找详细说明:如果您有兴趣:)“第二回复” Why do we check up to the square root of a prime number to determine if it is prime?

相关问题