John Salerno wrote: > ::sigh:: Well, I'm stuck again and it has to do with my get_factors > function again, I think. Even with the slight optimization, it's > taking forever on 20! (factorial, not excitement) :) It's frustrating > because I have the Python right, but I'm getting stuck on the math. > > The problem: > > "What is the smallest positive number that is evenly divisible by all > of the numbers from 1 to 20?" > > > > Here's the function (it's in the problem3.py file, hence the import > below): > > import math > > def get_factors(number): > factors = [] > > for n in range(2, int(math.sqrt(number))): > if number % n == 0: > factors.append(n) > factors.append(number // n) > > return factors > > And here's my new script for the new exercise: > > import math > from problem3 import get_factors > > max_num = 20 > n = math.factorial(max_num) > factors = get_factors(n) > div_all = [] > > for x in factors: > for y in range(2, max_num+1): > if x % y != 0: > break > elif y == max_num: > div_all.append(x) > > print(min(div_all)) > > It could easily be that I'm simply approaching it all wrong. I just > thought that maybe using the factorial of the highest number in the > range (in this case, 20) would be an easy way of finding which numbers > to test.
These are almost "trick questions" in a way, because of the math behind them. If the question were "What is the tallest high-school student in Scranton, PA?" then searching a population for the property would be the only way to go. BUT you can also build up the answer knowing the factorization of all the numbers up to 20. Mel. -- http://mail.python.org/mailman/listinfo/python-list