-
Notifications
You must be signed in to change notification settings - Fork 0
/
Euler_6_283.py
74 lines (59 loc) · 1.04 KB
/
Euler_6_283.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#
#
# Euler Problem 283
#
#
from Functions3 import GCD,gcd
summ = 0
ctr,ctr1 = 0,0
for m in xrange(2, 4000):
for n in xrange(1, m):
if gcd(m,n)!=1 or (m-n)%2==0: continue
a = (m*m - n*n)
b = 2*m*n
c = (m*m + n*n)
#if GCD((a,b,c))>1:continue
#print m,n,":",a,b,c
#if a**2 +b**2 == c**2:
A0=a*b/2;P0=a+b+c;R=float(A0)/P0
ctr+=1
#print m,n,":",a,b,c,":",A0,P0,R
if R < 1001:
#print a,b,c,":",A0,P0,R
#summ += P0
i=1
while 1:
A = A0*i**2
P = P0*i
R = float(A)/P
if R==int(R) and R<1001:
print m,n,i,":",a*i,b*i,c*i,":",A,P,R
summ += P
ctr1+=1
if R>1000:
break
i+=1
print "answer is",summ
print "total # triangles",ctr
print "total # Ts with int R", ctr1
exit()
'''
A0 = 24
P0 = 24
R=1
i=2
Psum = 0
print 1,A0,P0
while 1:
A = A0*i**2
P = P0*i
R = int(float(A)/P)
if R <1000:
print i,A,P, R
Psum += P
else:
break
i+=1
print
print "Sum of perimeters is", Psum
'''