From 446f043d68aec86cb2c705b94480f0f82bf88a9a Mon Sep 17 00:00:00 2001 From: Jonathan Chan Date: Thu, 1 Dec 2016 00:30:10 -0800 Subject: [PATCH] Problem 27 --- 27 | Bin 8192 -> 7976 bytes 27.c | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 27.c diff --git a/27 b/27 index 64e6890622cfcb17620b815a7e291b52cd1d8233..4cf351d5a644a08c5e7313702f9f0a88b5e85856 100755 GIT binary patch literal 7976 zcmcIpeQaCR6~DHV#-**3l$M3IP;aAK+7Xj>C4?5rbJCZ-ptMcfgb$VU)rsB4EODaP zhPGND;KFzcWu4d`W!fK|gfx>)PijlQta68emKc+6JB0ZP8YSL&6qDM?)9t{my;& zIQFY6Rg-qC_s%`Pd(OG%-gn;pcz#rGX>z+++4+OR=f1UP)4#SqzFhmm z%YPwTzEHesqTya#MEm+H;9mpoFQQLAiun=fcNcZDPV^5%V~KsDH`LS9*CkAoYRq^d zG>|ZRL(v$J{k?rLg_vSXOLIe`xh}9Sa4USfWdgg=NBRlD0LY%HHV@CGBr5Ck@O(d79?m&IzKqnA*BCCnVZL7&Poxv2nT-;B-Fu2^ zg~;Bz7**L-OK>k=si8!2H&soHXF;p3A(=v(7?ZM_WD02_E#-?|$P~)N3CL?dYPR0l zV_1JRQs<^y+nPty$Gw^`Mn`HT8+~b>CNe*S;`x2$D>n;q(nR3xM$LU-Mry`qSnofy z{3N`|a4S1rrHbr0ln)aqI!^5)3b6c3s&6+Q`-gNea>)Y+hBa-BWbQItr;T?mC6?yA zEnsiuE6I;+f9TE~h+iZt+hLfAA+V0qrJDe`J~>6>@oMb?3hXYCES-E7b~$GslRGEj?&TLty4eWk6u`BT=;P0 zqT707WM<{+*Q~LTakp#Cm0mq!y_LG?efU~yj2w9}1t>?8O>mw{yHevWJj^obd~)5W zK1<_2S%u2yE)33EV^5@$s&Z*cpLGxGv*kb0XE*9okDQfZbey7ycOf~dt--Uy`dRoi zjv3Zy=H^S;tYMYvWqvWLPr<90^c%xVZ-q?#I%XVM0e4f-^rGKSc~bh63-U(&>?3E4 z)a%u|ZPyqKE15xH(nD~#eHKctF^a-^ZCKB^#w>j%H8>*1bqXuTs0JL5a zscF|?WGe!nT!Jh`SbX8&+~`RL{J1;6|8c5Ykr>l4^5QpP{Bl_478H zCN@!mXP~+@@c{rdyjwO*J(CR|PM05k6E(x_Q^WeS^)3wwyjuFXVg1}j{rn?K!BZKR zrJtvIo%)5Y;C|r@^~^T;45K(_vIHji`p_hcY1?ATI&Hm|8NGr9>0Z_bKnm>H0-Nh{ zt*{O88G1mE4Nhf{A?433L|0P!G=S+3B=AqTu(M;vIz7Dg{BS!0n+;mi*6CMUk#{n~ zG9UaWo0X+EPX+G{TG`+|&DN*E_Gat%!M2totIoLncm24St@@R)eSUunh28JjJ8n zM6~`Axeo0Vt^*aWhAId z4||8iUCTDE`T9*?BA9eAZ3`b_eVKruui{B}UsDnLa079!qnF1JOQ2UJ|9M!HnO6It^z4^+HWu&s~kD>ID(o%LQy=f(HQuPY{zcb#~I~%&LM3c~06t7df zNpYwCmd3^n{_4$<&S)s+Umv(Vu&!op?P|Lu9F_Hf^)+j$4h10s@q@jIP$zg|z~
TLi)fWAJD5#DHD%P-Gw; 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 DdP?FE diff --git a/27.c b/27.c new file mode 100644 index 0000000..106f910 --- /dev/null +++ b/27.c @@ -0,0 +1,98 @@ +#include +#include +#include + +bool isPrime (int n) { + switch (n) { + case 1: + case 9: + return false; + case 2: + case 3: + case 5: + case 7: + return true; + default: + break; + } + + switch (n % 10) { + case 0: + case 2: + case 4: + case 5: + case 6: + case 8: + return false; + default: + if ((n + 1) % 2 != 0) + return false; + for (int i = 3; i * i <= n; i += 2) { + if (n % i == 0) + return false; + } + return true; + } +} + +bool* primeTable; + +void findPrimes (int n) { + primeTable = malloc (sizeof (bool) * (n + 1)); + for (int i = 0; i <= n; i++) + primeTable[i] = isPrime (i); +} + +int numOfPrimes (int a, int b) { + for (int n = 0; n < b; n++) { + int val = n * n + a * n + b; + if (val < 0) + val = -val; + if (primeTable[val] == false) + return n; + } +} + +int main (int argc, char* argv[]) { + int maxVal = 999 * 999 + 999 * 999 + 1000; + findPrimes (maxVal); + + int bestA = 0; + int bestB = 0; + int bestNum = 0; + for (int a = 0; a < 1000; a++) { + for (int b = 0; b <= 1000; b++) { + if (primeTable[b] == true) { + int n = numOfPrimes (a, b); + if (n > bestNum) { + bestNum = n - 1; + bestA = a; + bestB = b; + } + + n = numOfPrimes (a, -b); + if (n > bestNum) { + bestNum = n; + bestA = a; + bestB = -b; + } + + n = numOfPrimes (-a, b); + if (n > bestNum) { + bestNum = n; + bestA = -a; + bestB = b; + } + + n = numOfPrimes (-a, -b); + if (n > bestNum) { + bestNum = n; + bestA = -a; + bestB = -b; + } + } + } + } + + printf ("a: %d, b: %d, n: %d, a*b: %d", bestA, bestB, bestNum, bestA * bestB); +}