From fa9e2b7037e215052d32711f2ffe096f42a8705c Mon Sep 17 00:00:00 2001 From: Jesse Huang Date: Fri, 12 Dec 2014 11:44:05 -0500 Subject: [PATCH] solved problem 72! --- a.out | Bin 13535 -> 11028 bytes p66.py | 61 ++++++++++++++++++++++++++++++++++++++++----------------- p72.py | 42 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+), 18 deletions(-) create mode 100644 p72.py diff --git a/a.out b/a.out index e3b85c55609043d8a52cc8e2c51af30773618307..718144f9980450a67f0d60350f10b429cbd6f448 100755 GIT binary patch literal 11028 zcmeHNe{fXA9e>9Khz5MYA4MxlD$*u^A(uc*s?Ow0p1vC{Ata&22wg6hcjP*kOT2q0 zi4`XrqQ0J)$<$7#QyhnBrvv9&3wEuleYu!52eQkDo2ZX(l zSX833{F|_3A&mK>dL$U$AozBBb+Y9jts@npGmG6eW3lkYV7Q$H!+|a++Uq zv5@c6{3{mrhD0BtGwsoQ=VsVTKS#Wth80Skr$q>hY;glk<;nsJk{upbir0co}#_sMyZZ(pWUIG!$%G+TITkQ#RPtl^+3j~-{aV@C_@dG?-(T~19^A4X zb(dURIY&+IR*i$Iy!|CL`I2kDYK(eLpHc_*$KFd3 z9%Cfnk;5Yaxo!G0Sk{2NcKWj%-k&%ruS%G&;AoJGM^DOySM3G=q`da!ld8OAm)CWa z;AlWDeO{GoM`;jm^+&PCRO5i!|3cy2?zQf3x!Jninf^@pzuKCC>Po1Fvd#SmO4{@+ z6xXSMJiiX!z_l02wF=?dEyA^cT%rtf{}#i)lk!~&_@NBD|48A8<;(GMSPTq#jgPV? z{~=AjRZRXv)z}?S&DDrBMeJ%yGn=5BagV zgx$oaM1nCQX9xo~a5!SpQ)MWtP`;U`5qtAEn!u1f|EfI3TOQ-IYJ7qSB~;_ExfObS zn-Y?|`L{G!-06+4H$CzD=N0c52E)CeZeD)>nWB2*Y%Fi(;F6mg2J;r&9^brR2*Um| z$rwi1v;)QvnLS=Z88%%oi0HhH^dYu+EvK#U6wwg0M2{-lxo{bT@=j&@?S^Ghjc?lF zjVr_Tj&pVL&QYX_*Z7Cm__z5J>N${z&E?BcW2%F?_!Vf8iI}09{7vA`4A@IHB7bSgeR_Et+VGTdgBFT+dhg0ZL?oMc1lS&^cl$Lv157aU~HEa!1eIoYkZs><3T{|9)_wb zf&E)=9Hnt$<(`s1)epS?zwa!cpG7%-dIayO+0Pyxq^+H+lOOZx8VHZQdT@?P1;?StHi;>dfj}dk!VGj}Z2w^>hJxy4cu;&SDC+rYmt%Q9*SR-Kt z@N)bPU>HBEl-1%tFeQs65swP-|DT-nj@Bl(oRFM62&>^ZFN7=rwg^5*Js^A*Uy=?A zNi9kK3&NF>+yoB&q`3vqafcvUiD*JY2R|?9f|A_w(+B(dBi)eDyfpr1>;g7YO|-oDF5^*Qj@+@=^#6IddbRV;<t)APYCGEFC2Az4R z1d9Zuxgt{1zBSWV6`>#fKT1D+Z$({4Mp1~S-*@!CRstdL;;~-_SIz)BA)AGn6j{IW zrX@g^IVDF81jBhCQ05fmIViwX9QQRzj-EnC;jEeYLvV!rq2jo&(aR+>x6pnlOv${xd`MUkc&Vr0=Wp}B9MzfE&{m-lKW- zmifD4x+1NL6b@x@m;3eJZq4IY%7g8SL=v{4r-$J+ceE?)3kCIFc5j(9ba@TE_2O^U zSsPyD;w^aJ0bFzO;uwmQStG5mhN=v8`F$a+Iu_Mfz~|R=rKzF0j9EiSk*X}^s$f@? zwfUl2dc1^3F!NYAkvUUG`%Czwb6>sqf_@^?hk3ci1KY3e#la3)~j_b(isf_Otdwi@-+Yk&hB$B^_dTdQgG#WX@-{!a++hw)&VMCJ^jp1tqs1Fl6(iIE0gGv<# z!)@O*CKY!2f??@qX1?loz!f1zFm&r;u;IKU*D?mkI=g`nvUl<0+MWK_C8 zC3-2Rt&3Qq=_Z)ubdO532MzvGbC&M1XcF<#XQQ9A(c?C{6qYQO)nBvGPul3e+URR= zUz^##!A3J1z0pPw+Gu*Sl4+0Lie%FNvC%VdSDY!Q7qFT1O%@HWt+LEULziE!(+xRg z4X$A&$~b&3!>_~XyD>UP=-Y`eq0$vSy)~lmJ}4LHW}g!8I#iUJE6~uL^|h#9lQ{@M6dO-1eFwMyRDVXMGp3!OU oL@r#|;XFmhiBlP}?Bkd=yzLwotn>jq^$%5X@J{-%is#Y)01F$P5dZ)H literal 13535 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 U7%IV@^7qw<%KI`G-@3v71V9%m?f?J) diff --git a/p66.py b/p66.py index 18bffdd..87ba96b 100644 --- a/p66.py +++ b/p66.py @@ -1,21 +1,46 @@ from itertools import count from math import sqrt -def minSol(d): - for y in count(2,1): - x = sqrt(1 + d * (y**2)) - if x == int(x): - return x - -maxX = 0 -index = 0 -for i in xrange(2,1001): - if int(sqrt(i)) ** 2 == i: - continue - res = minSol(i) - if res > maxX: - maxX = res - index = i - print i - -print maxX, index +# initialize +d = 61 +x = int(sqrt(d))+1 +y = 1 +k = x ** 2 - d * (y ** 2) + +print x,y,k + +m = int(sqrt(d)) +while (m ** 2 - d) % k != 0: + m += 1 +print m + +x, y, k = float(x * m + d * y)/k, float(x + y * m)/k, float(m ** 2 - d)/k +print x, y, k +x, y, k = x/sqrt(abs(k)), y/sqrt(abs(k)), k/abs(k) +print x, y, k + + +def compose(t1, t2): + a, b = t1[0] * t2[0] + d * t1[1] * t2[1], t1[0] * t2[1] + t1[1] * t2[0] + k1k2 = t1[2] * t2[2] + return (a/k1k2, b/k1k2, 1) + + + +t1 = (x,y,k) +t2 = (x,y,k) +while any(int(z) != z or z < 0 for z in t2): + t1, t2 = t2, compose(t1,t2) + print t2 + + + +# # compose +# while x != int(x) or y != int(y) or k != 1: +# x, y = x ** 2 + d * (y ** 2), 2 * x * y +# x, y = float(x)/abs(k), float(y)/abs(k) +# k = 1 +# print x, y + +# print int(x), int(y) + diff --git a/p72.py b/p72.py new file mode 100644 index 0000000..837b0af --- /dev/null +++ b/p72.py @@ -0,0 +1,42 @@ +#!/bin/python + +from math import sqrt + +size = 10000001 + +#modified sieve to store factors +def pfacgen(x): + sieve = [0]*x + lim = x/2+1 + i = 2 + for i in xrange(2,lim): + if sieve[i]==0: + for j in xrange(i*2,x,i): + if sieve[j] == 0: + sieve[j] = [i] + else: + sieve[j].append(i) + for k in xrange(2,x): + if sieve[k]==0: + sieve[k] = [k] + return sieve + +primes = pfacgen(size) + +def totient(x): + pfacs = primes[x] + tot = x + for prime in pfacs: + tot *= (prime - 1) + tot /= prime + return tot + + +sum = 0 +for d in xrange(2,1000001): + sum += totient(d) + +print sum + + +