From 0238e107c67314d975cc2fb653143e9af4929af8 Mon Sep 17 00:00:00 2001 From: "sigonasr2, Sig, Sigo" Date: Fri, 22 Jul 2022 15:44:34 +0000 Subject: [PATCH] 27 solved Co-authored-by: sigonasr2 --- archives/27/current | Bin 0 -> 21392 bytes archives/27/src/main.c | 66 +++++++++++++++ archives/27/src/utils.c | 173 ++++++++++++++++++++++++++++++++++++++++ archives/27/src/utils.h | 16 ++++ current | Bin 21512 -> 21392 bytes src/main.c | 34 +++++++- 6 files changed, 285 insertions(+), 4 deletions(-) create mode 100755 archives/27/current create mode 100644 archives/27/src/main.c create mode 100644 archives/27/src/utils.c create mode 100644 archives/27/src/utils.h diff --git a/archives/27/current b/archives/27/current new file mode 100755 index 0000000000000000000000000000000000000000..b9a1fc3e8a7594c4f048fb4e550644703ca0ab82 GIT binary patch literal 21392 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 literal 0 HcmV?d00001 diff --git a/archives/27/src/main.c b/archives/27/src/main.c new file mode 100644 index 0000000..4e7846a --- /dev/null +++ b/archives/27/src/main.c @@ -0,0 +1,66 @@ +#include +#include "utils.h" + +/* + Euler discovered the remarkable quadratic formula: + + + It turns out that the formula will produce 40 primes for the consecutive integer values . However, when is divisible by 41, and certainly when is clearly divisible by 41. + + The incredible formula was discovered, which produces 80 primes for the consecutive values . The product of the coefficients, −79 and 1601, is −126479. + + Considering quadratics of the form: + + , where and + + where is the modulus/absolute value of + e.g. and + Find the product of the coefficients, and , for the quadratic expression that produces the maximum number of primes for consecutive values of , starting with . + + https://projecteuler.net/problem=27 +*/ + +int main(int argc,char**argv) { + FILE*f = fopen("archives/primegenerator/primes","r"); + int startMarker=0; + while (fgetc(f)!='{') { + startMarker++; + } + int primes[2500]; + char c; + int counter=0; + while (counter<2500) { + int digit=0; + while ((c=fgetc(f))!=',') { + digit*=10; + digit+=c-'0'; + } + primes[counter++]=digit; + } + int n=0; + + int maxLength=0; + int maxA=0; + int maxB=0; + + for (int a=-999;a<1000;a++) { + for (int b=-999;b<=1000;b++) { + for (int p=0;p<2500;p++) { + if (n*n+a*n+b==primes[p]) { + n++; + p=0; + } + } + if (n>maxLength) { + maxLength=n; + maxA=a; + maxB=b; + printf("New max of %d found with n^2+%dn+%d\n",maxLength,maxA,maxB); + } + n=0; + } + } + printf("\n\nProduct of maxes (%d*%d)=%ld\n",maxA,maxB,(long)maxA*maxB); + + return 0; +} \ No newline at end of file diff --git a/archives/27/src/utils.c b/archives/27/src/utils.c new file mode 100644 index 0000000..47f5e25 --- /dev/null +++ b/archives/27/src/utils.c @@ -0,0 +1,173 @@ +#include "utils.h" +#include +#include + +struct String mult(struct String numb1, struct String numb2) { + struct String n1 = numb1; + struct String n2 = numb2; + byte carryover = 0; + if (numb2.length>numb1.length) { + n1=numb2; + n2=numb1; + } + int addends[n2.length][n1.length+1]; + for (int i=0;i=0;i--) { + carryover=0; + for (int j=n1.length-1;j>=0;j--) { + int mult = (n1.str[j]-'0')*(n2.str[i]-'0')+((carryover!=0)?carryover:0); + //printf(" %d/%d\n",mult,carryover); + carryover=0; + if (mult>=10) { + carryover=mult/10; + mult=mult%10; + } + addends[(n2.length-1)-i][j+1]=mult; + } + if (carryover>0) { + addends[(n2.length-1)-i][0]=carryover; + } + } + //printIntDoubleArr(n2.length,n1.length+1,addends); + struct String sum = {1,"0"}; + for (int i=0;i=numb2.length) { + for (int offset=0;offsetoffset) { + //printf("%c %c\n",numb1.str[numb1.length-offset-1],numb2.str[numb2.length-offset-1]); + int sum=((numb1.str[numb1.length-offset-1]-'0')+(numb2.str[numb2.length-offset-1]-'0'))+((carryover>0)?carryover--:0); + if (sum>=10) { + carryover=1; + sum-=10; + } + str[offset]=sum+'0'; + } else { + str[offset]=numb1.str[numb1.length-offset-1]+((carryover>0)?carryover--:0); + } + //str[offset+1]='\0'; + } + } else { + for (int offset=0;offsetoffset) { + //printf("%c %c\n",numb1.str[numb1.length-offset-1],numb2.str[numb2.length-offset-1]); + int sum=((numb1.str[numb1.length-offset-1]-'0')+(numb2.str[numb2.length-offset-1]-'0'))+((carryover>0)?carryover--:0); + if (sum>=10) { + carryover=1; + sum-=10; + } + str[offset]=sum+'0'; + } else { + str[offset]=numb2.str[numb2.length-offset-1]+((carryover>0)?carryover--:0); + } + //str[offset+1]='\0'; + } + } + if (carryover>0) { + str = realloc(str,++digitCount); + str[digitCount-1]='1'; + //str[digitCount]='\0'; + } + for (int i=0;ic6s7LmD)m06{5L3CAzGsMg-R3gUL6nspykW%GZ zap)1JiTh`px*0RXI}_tT9y8*M%h=);Vis3l@j6fuWg$*?_nmWF_BhG8zwhxo-|L?C zHhh7bj^n0u(mQY8l6y?J|On^Pr;K_)gSHS zG8O~eBT7BWQXu+9wpHKh@qgXt4e{3W_|JyV*aFQ=mU_E_1oz@jiMtHv{VibiDR#{D ze?^Rjhz;CZ+s-)Cs@nq)TU8s~SZZd1cqkO}fIkRoT{|;=8;g*4$F3fK8z`*W9)IVk zbYWDwG%8&IDdm}}-h0f+yh1$^49Z$ zUhA$l`7}-scd>GOT*7tjjLVAMaa@a>%j?`xq-he@v_z7h)vaZb{H*doBY!q)cGjPC z5nfr;IE2nZ4lh#Lpre0g;L|FsYiETja03l{C#o=Z-Urme+PTZk&td8To=+_A4e(^* zAyN8KG_+g_H1n+7%ky=N)$$=_KBQxrkr=2R@fgMInfy*wMJiVCd?(kB&x;^iljRE& z{=_8d585@cjI11{5k|duuI#2?TBDUat3KrLOBUOqna4BN2pj=z1AaauB=)qtbKRJRGVilY}O6Z>)jjHd8*5+ z7!wYx*eImiJX36*42NwsQ0xdG7TI7UJXV*x1&+5`JA zL~Diw$Q5tgN#@2y>GqH@(J_eqPqEJ8Z&7phq^Ld+FW;jD*{M;_Ks4W{t3VW>(ogQw zz1e230M>j^Q=zeCAdkj#`gCLwi--`*xe_=_fKv!K%F*Rv#t^{N0QT)LjO8GY`pFV4 z0GRS&p9D@Pa8@u*LA>!JQbg}&=fpe#y8?FlXm+AJd*H);eA#ibX!>m=pm> zZ#pwm!k+*ZAiQ*JR@5}-1vzidX-p!r>CoIwq~1>Aw6lbA_Ohd4nL1g@g(4 z{~xr_%lVtk$KXfGR#oW3vmxY;wa_wGCd<9swHphxl_XJTL2^+X%-sY5;Ck`JekE*; z13L?Qp1nL+N|c5ZLiY6*P3QfCm_@S+ll88U*PKSL738HX4XNFNM&<(tv7C{!wt&}& z%*g20yy0hk=u}4NQ_8OfI3;!}Xu96!%a@0guxij^OMGF9v`P5xNe2D(;&NPKzP8e%w#=_|)lod)A k!Wg-7p^9-Wtz0}y-&v?R2MIl~_!a%BVofz;dZHxtZ~Tt-{Qv*} delta 3888 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 { + maxLength=n; + maxA=a; + maxB=b; + printf("New max of %d found with n^2+%dn+%d\n",maxLength,maxA,maxB); } + n=0; } } + printf("\n\nProduct of maxes (%d*%d)=%ld\n",maxA,maxB,(long)maxA*maxB); return 0; } \ No newline at end of file