So I've recently started poking at the Project Euler site, because I
feel that I need to practice writing code. For those of you interested
in solving the problems on your own I advice you to not read this, as
it will spoil the solution.

Problem 3 is this:
The prime factors of 13195 are 5, 7, 13 and 29.

What is the largest prime factor of the number 600851475143 ?

I came up with this pseudocode:
#pseudocode:
#    divide by x until non-prime is found:
#        if not remainder:
#            check if it's prime or not:
#                if not prime: exit loop
#            if not prime: store in variable
#        increment x by 1

Here are the functions I came up with:

def isprime(n):
    if n == 1:
        return False
    for x in range(2, n):
        if n % x == 0:
            return False
    else:
        return True

def factorization(n):
    factor = 0
    x = 2
    while True:
        if n % x == 0:
            if isprime(x):
                factor = x
            else:
                return factor
        x += 1

This, however, feels horribly inefficient. Is there a better way to do
it? I think most of my problems stem from my weak mathematical skills,
to be honest. This wasn't too bad, but even for problems 1 and 2 I've
relied on brute forcing the answer instead of looking for a
mathematical solution.

-- 
best regards,
Robert S.
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to