Python上的Euler3项目

Python上的Euler3项目,python,Python,我在考虑欧拉计划。我已经有了解决方案,但它太长了。 这是我的密码: def check_prime_number(prime_number): for i in range(2, int(prime_number / 2)): if prime_number % i == 0: return False return True def find_divisors(number):

我在考虑欧拉计划。我已经有了解决方案,但它太长了。


这是我的密码:

def check_prime_number(prime_number):

    for i in range(2, int(prime_number / 2)):
        
        if prime_number % i == 0:
            return False
            
    return True

def find_divisors(number):

    for divisor in range(int(number / 2), 2, -1):

        if check_prime_number(divisor) and number % divisor == 0:
            number /= divisor
            
            print(divisor)
            break

find_divisors(600851475143)

如何在Python中处理长数字,如600581475143?

给您:

def max_prime_除数(限制):
素数=[2]
答案=无
如果限制%2==0:
答案=2
对于范围(3,int(限制**.5)+1,2)内的i:
内极限=int(i**.5)
_prime=True吗
对于素数中的素数:
如果素数>内极限:
打破
如果i%prime==0:
素=假吗
打破
如果是_素数:
素数。附加(i)
如果限制%i==0:
答案=i
回覆
打印(最大素数除数(600851475143))
输出:

6857

`

Python具有无限精度整数。确切的问题是什么?
def check_prime_number(prime_number):对于范围内的i(2,int(prime_number/2)):如果prime_number%i==0:返回False返回True def find_除数(number):对于范围内的除数(2,int(number/2)):如果check_prime_number(除数)和number%divisor==0:number/=divisor print(divisor)find_divisors(600851475143)
输出:
7183914716857
@标记粘贴的代码与帖子中的代码相对应。我们的方法不同。您正在检查一半的值。我正在检查值的
sqare根。此外,除法检查只检查素数。@标记偶数不能是素数除数。那么,看看循环的索引。但它是否将
7183914716857
输出作为解决方案计算゚ヮ゚)