Función no devuelve nada después de dar un número grande como un argumento

markajino:

Estoy aprendiendo Python haciendo Proyecto Euler preguntas y estoy atascado en Problema # 3 .

Creo que he encontrado una solución que funciona, pero al insertar el gran número 600851475143 simplemente no devuelve nada. Creo que sólo cargas y cargas causan incluso con 6.008.514 se tarda 10 segundos para devolver la respuesta.

# What is the largest prime factor of the number x?
import math

def isPrime(x):
    try:
        sqr = math.sqrt(x)
        if x == 0 or x == 1:
            return 0

        for n in range (2 , int(sqr)+1):
            if x % n == 0:
                return 0
        return 1
    except:
        return 'Give positive numbers.'

def largestPrimeFactor(x):
    if isPrime(x) == 1:
        return 'This number is prime.'
    else:
        largest = -1
        mid = x/2
        for n in range(2,int(mid)+1):
            if isPrime(n):
                if x % n == 0:
                    largest = n

        if largest == -1:
            return 'Enter numbers above 1.'
        else:            
            return largest

print(largestPrimeFactor(600851475143))
Jasar Orion:

tengo otra manera:

def Largest_Prime_Factor(n):
    prime_factor = 1
    i = 2

    while i <= n / i:
        if n % i == 0:
            prime_factor = i
            n /= i
        else:
            i += 1

    if prime_factor < n:
        prime_factor = n

    return prime_factor

es más rápido que el anterior

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=387946&siteId=1
Recomendado
Clasificación