def generate_count(rmax): counter = 0 mmax = int(rmax*8/(3**0.5)) for m in range(1,mmax): for n in range(1,m/2+1): if gcd(m,n) > 1: continue a = m**2 - n**2 b = 2*m*n - n**2 c = m**2 - m*n + n**2 if a==b: continue else: k = gcd(a,gcd(b,c)) r = (3**0.5/(2*k))*n*(m-n) if r<= rmax: bump = int(rmax/r) print m,n,k,bump counter += bump
def generate_primative_60(rmax): for m in range(1,1000): for n in range(1,m): if gcd(m,n) > 1: continue a0 = m**2 - n**2 b0 = 2*m*n - n**2 c0 = m**2 - m*n + n**2 if a0==b0: continue k = gcd(a0,gcd(b0,c0)) a0,b0,c0 = a0/k,b0/k,c0/k for s in range(1,1000): a,b,c = s*a0,s*b0,s*c0 r = s*(3**0.5/(2*k))*n*(m-n) if r<= 100: yield (a,b,c),(m,n,k,s) else: break
def generate_count(rmax): counter = 0 mmax = int(rmax*6/(3**0.5))+2 for m in xrange(3,mmax): if m%1000==0: print m nmax = m/2+1 for n in xrange(1,nmax): if gcd(m,n) > 1: continue k =gcd(m+n,2*m-n) r = (3**0.5/(2*k))*n*(m-n) if r<= rmax: bump = int(rmax/r) counter += bump #print m,n,bump elif r > 3*rmax: break
from fractions import Fraction import eulertools output = [((0,1),(1,1))] Nmax = 10**8 counter = 0 for i in xrange(0,Nmax+1): temp = [] for lb,ub in output: md = (lb[0]+ub[0],lb[1]+ub[1]) mp = (lb[0]*ub[1] + ub[0]*lb[1],2*lb[1]*ub[1]) if eulertools.gcd(mp[0],mp[1])!=1: raise if md[1] <= Nmax: if mp[1] <= Nmax: if 100*mp[0] < mp[1]: counter += 1 if 100*lb[0] < lb[1]: temp.append((lb,md)) if 100*md[0] < md[1]: temp.append((md,ub)) if len(temp) == 0: break output = temp if i% 100000==0: print i,counter
import eulertools p=1009 q = 3643 n = p*q phi = (p-1)*(q-1) A = [(e,(eulertools.gcd(e-1,p-1)+1)*(eulertools.gcd(e-1,q-1)+1)) for e in range(2,phi) if eulertools.gcd(e,phi)==1 ] minA = min([a[1] for a in A]) print minA print sum([a[0] for a in A if a[1]==minA])
import eulertools cmax = 10**16 counter = 0 for i in xrange(1, 10**4): if i % 100 == 0: print i, counter for j in range(1, i): m = i**2 - j**2 n = 2 * i * j a = abs(m**2 - n**2) b = 2 * m * n c = m**2 + n**2 if c > cmax: break if eulertools.gcd(a, c) == 1 and eulertools.gcd(b, c) == 1: area = a * b / 2 if area % 6 == 0 and area % 28 == 0: pass else: counter += 1 print counter # it looks like all are super perfect # a^2 + b^2 = c^2 + d^2 = L # (a+c)(a-c) = (d+b)*(d-b) = L-b^2 - d^2
import eulertools cmax = 10**16 counter = 0 for i in xrange(1,10**4): if i% 100 ==0: print i,counter for j in range(1,i): m = i**2 - j**2 n = 2*i*j a = abs(m**2 - n**2) b = 2*m*n c = m**2 + n **2 if c > cmax: break if eulertools.gcd(a,c)==1 and eulertools.gcd(b,c)==1: area = a*b/2 if area % 6 ==0 and area % 28 ==0: pass else: counter +=1 print counter # it looks like all are super perfect # a^2 + b^2 = c^2 + d^2 = L
import eulertools import math r = 105 primitivepoints = {} for x in range(-r+1,r): for y in range(-r+1,r): if x**2 +y**2 < r**2 and (x,y)!= (0,0): k = abs(eulertools.gcd(x,y)) key = (x/k,y/k) if key not in primitivepoints: primitivepoints[key]=0 primitivepoints[key]+=1 N = primitivepoints.values() a = sum(N)/2 c = sum(n**2 for n in N)/2 b = (a**2 - c)/2 sol = sum([b*n-a*n**2 + n**3 for n in N])/3 print sol