def genadmissible(number, pos, result): while True: number = number*primes[pos] if number >= limit: return result.append(number) print tools.primefactorization(primes, number, 32000) genadmissible(number, pos+1, result)
def iscoprime(a, b): (f1, c1) = tools.primefactorization(primes, a, 1000) (f2, c2) = tools.primefactorization(primes, b, 1000) c = set() for i in f1: c.add(i) for i in f2: c.add(i) if len(c) == len(f1)+len(f2): return True return False
def sumofproperdivisors(input): (f, c) = tools.primefactorization(primes, input, 1000000) sumofdivisors = 1 for i in range(len(f)): sumofdivisors *= (f[i]*f[i]**c[i]-1)/(f[i]-1) return sumofdivisors-input
def c(n): result = 0 (f, c) = tools.primefactorization(primes, n, 1000000) for ff in f: result += ff return result
def totient_(n): if tools.isprime(n): return n-1 (f, c) = tools.primefactorization(primes, n, 1000000) p = n for f1 in f: p *= (f1-1.0)/f1 p = int(p) return p
def totient_(n): if tools.isprime(n): return n-1 (f, c) = tools.primefactorization(primes, n, 1000000) fc = 0 for i in range(len(f)): fc += f[i]*c[i] # print "fc:", fc, len(f), f, c p = n for f1 in f: p /= f1 p *= f1-1 return p
primes = [] def sumofproperdivisors(input): (f, c) = tools.primefactorization(primes, input, 1000000) sumofdivisors = 1 for i in range(len(f)): sumofdivisors *= (f[i]*f[i]**c[i]-1)/(f[i]-1) return sumofdivisors-input tools.genprimes(primes, 1000000) print sumofproperdivisors(589786) print tools.primefactorization(primes, 589786, 1000000) longestchain = 0 minmember = 0 ignore = set() print 'start' for i in range(4, 1000000): if not i%200: print "i:", i, len(ignore), longestchain, minmember if tools.isprime(i): continue if i in ignore: continue pdsum = sumofproperdivisors(i)
pri = 0 for i in range(len(p2)): if p2[i] < 5000000: pri = i break pi = 0 while primes[pi] < p2[pri]: n = primes[pi]*p2[pri] while n < 10000000: t = (primes[pi]-1)*(p2[pri]-1) if ispermutation(n, t): if minrel > n*1.0/t: minrel = n*1.0/t minn = n minprimes = (primes[pi],p2[pri]) pi += 1 n = primes[pi]*p2[pri] pri += 1 pi = 0 # while primes[pi]*p2[pri] >= 10000000: # pi -= 1 print minn, totient(minn), minrel, minprimes print tools.primefactorization(primes, 8319823, 1)
if tools.gcd(m, n) == 1: p += 1 x = 2*m*(m+n) if x in ps: ds.add(x) ps.add(x) while i <= limit: j = i/2 if tools.isprime(j): i += 2 continue (f, c) = tools.primefactorization(primes, j, 1000000) if len(f) < 2: i += 2 continue if f[0] == 2: c[0] += 1 else: f.append(2) c.append(1) # P = z * 2 * m * (m + n) # m > n # m%2 != n%2 # gcd(m, n) = 1 # lahendub ainult yhel moel
p2.reverse() factorcache = {} for pi in range(len(primes)): #for pi in []: p = primes[pi] if p == 2: continue if p>=limit: continue if p<2**23: continue if not pi%1000: print "p:", p (f, c) = tools.primefactorization(primes, p-1, factorcache) d = {} for i in range(len(f)): d[f[i]] = c[i] while True: mk = max(d.keys()) if mk <= 7: break (f, c) = tools.primefactorization(primes, mk-1, factorcache) for i in range(len(f)): d.setdefault(f[i], 0) d[f[i]] += c[i]