Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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
Exemple #4
0
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
Exemple #5
0
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])


Exemple #6
0
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
Exemple #7
0
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
Exemple #8
0
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