def primes(n): if n<=2: return [] sieve=[True]*(n+1) for x in range(3,int(n**0.5)+1,2): for y in range(3,(n//x)+1,2): sieve[(x*y)]=False return [2]+[i for i in range(3,n,2) if sieve[i]] def primefactors(n): primelist = primes(100) lpf = 2 for prime in primelist: print "Checking prime: "+str(prime) if n%prime == 0 and prime > lpf: print "Better prime found: "+str(prime) lpf = prime return "{!s},{!s}".format(lpf,n/lpf)