From fbebd6c05f81c5a8ca7db2963bf3365eb2168566 Mon Sep 17 00:00:00 2001 From: Kevin Keogh Date: Sun, 3 Feb 2019 14:21:43 -0500 Subject: [PATCH] Add more solutions --- problem-55.py | 23 +++++++++++++++++++ problem-56.py | 12 ++++++++++ problem-57.py | 12 ++++++++++ problem-65.py | 20 +++++++++++++++++ problem-69 | Bin 0 -> 8680 bytes problem-69.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++ problem-69.py | 20 +++++++++++++++++ 7 files changed, 147 insertions(+) create mode 100644 problem-55.py create mode 100644 problem-56.py create mode 100644 problem-57.py create mode 100644 problem-65.py create mode 100755 problem-69 create mode 100644 problem-69.c create mode 100644 problem-69.py diff --git a/problem-55.py b/problem-55.py new file mode 100644 index 0000000..e820b6a --- /dev/null +++ b/problem-55.py @@ -0,0 +1,23 @@ + +def get_palindrome(num): + return int(str(num)[::-1]) + + +def is_palindrome(num): + return get_palindrome(num) == num + + +if __name__ == '__main__': + + results = [] + for i in range(10, 10000): + num = i + get_palindrome(i) + counter = 0 + while counter < 50 and not is_palindrome(num): + num += get_palindrome(num) + counter += 1 + if not is_palindrome(num): + results.append(i) + print(len(results)) + + diff --git a/problem-56.py b/problem-56.py new file mode 100644 index 0000000..1df14da --- /dev/null +++ b/problem-56.py @@ -0,0 +1,12 @@ + +MAX_NUM = 100 + +if __name__ == '__main__': + maximum = 0 + for a in range(MAX_NUM): + for b in range(MAX_NUM): + num = a ** b + total = sum(int(x) for x in list(str(num))) + if total > maximum: + maximum = total + print(maximum) diff --git a/problem-57.py b/problem-57.py new file mode 100644 index 0000000..1ff3da3 --- /dev/null +++ b/problem-57.py @@ -0,0 +1,12 @@ + +if __name__ == '__main__': + results = [] + numerator = 3 + denominator = 2 + for _ in range(1000): + if len(str(numerator)) > len(str(denominator)): + results.append(str(numerator) + '/' + str(denominator)) + denominator += numerator + numerator += 2 * (denominator - numerator) + print(results) + print(len(results)) diff --git a/problem-65.py b/problem-65.py new file mode 100644 index 0000000..357a3af --- /dev/null +++ b/problem-65.py @@ -0,0 +1,20 @@ + + +if __name__ == '__main__': + sequence = [2] + + i = 1 + while len(sequence) < 100: + sequence.extend([1, i * 2, 1]) + i+=1 + + numerator = 1 + denominator = sequence.pop() + + while len(sequence) > 0: + frac = (sequence.pop() * denominator + numerator, denominator) + denominator = frac[0] + numerator = frac[1] + + print(frac) + print(sum(int(i) for i in list(str(frac[0])))) diff --git a/problem-69 b/problem-69 new file mode 100755 index 0000000000000000000000000000000000000000..0a2a36545275f286d62a226984992f10108fa2e9 GIT binary patch literal 8680 zcmeHNdu&_P89%o3aQg6dI|^xwR*SV;S}nJBNkal-y>=dTP}+vpVIW9voY+nbv7Oo1 zEJYKKrLA_g0@a4JN@&xhX%bA+r18h-w5oL))(1>1A%NHzTR||nEf15j63VFeednIf zzP>dR(lqU#9_ji!-|u{{^StMr>xa5}yX`g`qhx2_WXR=e6%HA{j5V#|tiak>15?-< zc0H>Dq!u29mmoEAL>Gi_09pf2o817~>yj0Ne@}nYZ7`*LXYT-2#hGz59@|cNZ1S672uFpkg!hv zTc#+BsqY;vf_bMfmJ)4Lt?FwQTU+(K}t@b`J`QV{hcDpbPTAN#20@-W8}z4`jb^Y6QvURirln=Ba`&2CSMqgZd3)by}IKj;G^EEv62S-Ukd8 zs2MGs*3?8eo&;nhkxB|gWm|iD0v+lm`9`^=l;0$8M%UN|SZ7Q&;IMww58BE&j9dq6 z7g%-`@^;pR!jKlEK~Axc#gO8BquapifkS(gJSLocVp(wVU1#tIwVy5au;9L&R-3mq4b9@_c_=Eb`v`ueH45aAAH~A6XNr*4okJd7ot@$QGr-3V8rqEcL;e0EcU|}F z?5>#fLGJe`=X(#Fy5}YL(#IhZfM0^=^?7N-96WE#OS@-dQq%MB%*7=6g?Z`tY;8;m z9gj)xEAJ`G$|7xOl$)pzkzfPR-@pXEJsAtbSZS zwSFdhPXEN0n|o{Wl1+LdH+jP5x8>UZra8Ini|3C(_^0Q4qz$LeZiE)_<@CQCeYaj= z$I!{Vw5)TjGylrvViAIZN&_eDi-H_Bz+({4*-KESpF8?CsrYh2>1R-2XdEq2A+Jh) zKa>O~pL28W?g9Tj)6$x~;0+tMN1xpt)ZYqDzFp`G^_fuLRpPUW`*Z6|`Wm$eloYm3R6w1y2#8~z`@b*jO`Saw-IDCU#UE(0fOe+`iB z0{3*x0}E_$atq7Wp8pZ(m5hCe3dNa$vk!nyIi7t*y`bH+@1nk-`TY6<^nXJEdh|~h zx}+nyxjgi*ejNB0=iYBWA$7kh1q$n5)n~H#PJL?b%!TQLT)z(Wv)4>6V1G-$%}tl> z>z90|8|Jx1>BviSAAr3DVehikeL@O+y#9oKGMm?D=gw5q_kYWOhhH!H`~9KbN7wzd z&I672Xfx7XJ^IBS{gvMJ@9;S}^_e5D{tLQ!-+P+J_d2zAuYRsqzt{;Dir4%#2$Lb$ zem;8+#)1=vfq%fi+pkU^EXR8RCJ46&5;#|Iok?aBL(%ljo^|m>EFIS3DG%ghi?Gv0 zDr~W>cH9EfgW)>jgfMVI2Z82+9{#LY97GDk2>W9J=nT+1p(i{r=uZLVD*|A+u4A%2 zu#?#)+_u$A>YWE|^=`!RUET+_HlTn=)#Vvm3*{(3{%Nu3MOl}-+tqlRwD>#DhuM}@ zw`{m^?F|T{KE}NOcDEoP65{v358pibzJa>W}^E!?uucoUlaJ2=lw!r_h1rF9J-2J$q6btTc zFcDp1u&m%vcy6iSUxsZ5rj`5`&s&2$w_5PDp3-r$QIz9akBQ3vdAXQE{*YZkQabZB z3V(FgIc!(3n9)0psmi0L|mu$=Hu z_)~(XxXGV5hL-%pa?k5CA>`qe$$6WwTM+!cqFliLb3*4>tD~>Nz7bQapqw%NZ0+c{ z+0)cNluc?`&t|zr_BOX>Ip=%O*D8BkWS@7vQQ+C+^|g9iy?C_wkI4a}tIe)lA>)AF z301`%Osk65l*WzOm;*);jh9Nij?uWP#OqnL{&2u3rGBiGZ(uYYD)B|7aZ`yeF3q1x zd^qf&IYT9HGW*@?99aqwTdAqe$g`GUduWv3*5TC;{MXc%5l=Vu#4kYw&w%F z4z1U~^0Xg*ZB_c^7l2o**XPyu8E$7e`+kE0xpK-uwpu%&L^b<=!~%%NIv(Bt)K;b6 z{~_e*y}?=d`GjY#9G^>|0=6pS;Re8$L;K@t7!$4Un*`1TPG^H#0rzmp%AZF#e&x8j z3vf5Q<*eiC>wqt>GVcaCUTGV-hlCyLxIF;4=Sp$*B;d>JE1B0ao}WV8G_Pxf?z4bn zI}D2YMg{&FP&bS>#bRflkf-}!I;))o9ObR`ofGo3{_ryu*nW-U!kLN8lYKES=*)Hz zaF0ojvWuYOu)bEm*8*Nmeu~?#vaSxNwTzaH#pGeQvAeBfr`p@IE2OF{5=}=(;u$TP zR<(pWJeEpEGawO3sUu^lq41a*(NgJ*8qQ9z;Z$OLEUHB#@=crDTdE7Gv3N4BhSTZr z9yOZO(tB7e9Zp2mNH&q!11cs?1xc+!bUd9J8jB{HTibb*-8=o;y40@ioe-uGGvzBZ zBTVhQYrB72PX|buO86ZmKybyXb_G?#TCj5`Q@8f+2>5%|9o^l#x1lpp+eg_u$e+(2$reQNLUM#cKKdZQRpTVZ$F_yLCUx! z1*YQ06v{Fwbu^rept+tMAQg!x)odmTH7f^&H3NPqlM!ab?Q8jRw(JrwUq^;P{kHqn zouYd?#=@Bl?^}qUS`{ls{a;ZnCTI2}wD1s6Ep5C-;>DWTtJh`|osNE8p@djUrMfGE#76rRgj{G&eV zSoI$R4CBK1FwwcSAoS@xYLs3%esm}>>(l<+jX^=8`Wqa+D~&|-31H3ow2xPWKE+G= zR{kdzeR|*a3H|ShdXPT(CI06YeL5GsEDo}CUL|>9mRR<*(5L>R^TQdT-&B$`GS>Ki zW6`JYne?5r)1q(nf6Ss!=aD|)=o{F$reyVh8p`k!E;SSFFX_9dRo=?K0=kk(pZ2qj zXcUrF-paoTG8iKHr*nko3+m&(7{@N@(|L)$OV5b<)A%O;G!70~{L}Zu1*{Y#k~g?A zPxuE=V2;0Z{t^zFNKsJIBf4PGr~Ph|(5E=b4CxVn88V1b{b@hgCKRpmqB%&NIRHS+ zTSANs>GKb?rZUnex(v$5w@HjOii<8hhnSOv<-Td|nB~Sr{1c+%z6^yM;i3A_`iJwg Rn*aQ@hPCql77X6%|KB+KBSZiI literal 0 HcmV?d00001 diff --git a/problem-69.c b/problem-69.c new file mode 100644 index 0000000..9ec2a00 --- /dev/null +++ b/problem-69.c @@ -0,0 +1,60 @@ +#include + +unsigned int gcd(unsigned int u, unsigned int v) +{ + int shift; + if (u == 0) return v; + if (v == 0) return u; + shift = __builtin_ctz(u | v); + u >>= __builtin_ctz(u); + do { + v >>= __builtin_ctz(v); + if (u > v) { + unsigned int t = v; + v = u; + u = t; + } + v = v - u; + } while (v != 0); + return u << shift; +} + + +unsigned int is_coprime(unsigned int u, unsigned int v) +{ + if (gcd(u, v) == 1) + return 1; + return 0; +} + + +int main(int argc, char** argv) { + unsigned int i, j; + unsigned int coprimes; + unsigned int MAX_NUM = 1000000; + int greatest = 0; + double ratio = 0; + + for (i=1; i greatest) { + greatest = i; + ratio = (double)i / coprimes; + } + } + + printf("number: %i\n", greatest); + printf("ratio : %f\n", ratio); + return 1; +} + + + diff --git a/problem-69.py b/problem-69.py new file mode 100644 index 0000000..c9bab06 --- /dev/null +++ b/problem-69.py @@ -0,0 +1,20 @@ + +from math import gcd + +MAX_NUM = 1000000 + +def is_coprime(a, b): + return gcd(a, b) == 1 + + +if __name__ == '__main__': + greatest_ratio = (0, 0) + for n in range(2, MAX_NUM+1): + if n % 10000 == 0: + print(n) + relative_primes = len([x for x in range(2, n) if is_coprime(x, n)]) + 1 + if n/relative_primes > greatest_ratio[1]: + greatest_ratio = (n, n/relative_primes) + print(greatest_ratio) + +