From 350c81068e4bf6dcf1f0f2f7d0f949cb04de99be Mon Sep 17 00:00:00 2001
From: Jonas <jonas@stirnemann.xyz>
Date: Mon, 25 Oct 2021 13:04:05 +0200
Subject: [PATCH] Refactored and corrected functions and main

---
 jmaths/Makefile        |   2 +-
 jmaths/bin/main        | Bin 16928 -> 16256 bytes
 jmaths/include/jmath.h |  28 ++++++++++++
 jmaths/src/jmath.c     |  70 ++++++++++++++++++++++++++++++
 jmaths/src/main.c      |  96 ++++++++++++++++-------------------------
 5 files changed, 137 insertions(+), 59 deletions(-)
 mode change 100644 => 100755 jmaths/bin/main
 create mode 100644 jmaths/include/jmath.h
 create mode 100644 jmaths/src/jmath.c

diff --git a/jmaths/Makefile b/jmaths/Makefile
index 83ef336..9b22df6 100644
--- a/jmaths/Makefile
+++ b/jmaths/Makefile
@@ -5,7 +5,7 @@ BIN     	:= bin
 SRC     	:= src
 INCLUDE 	:= include
 LIB     	:= lib
-LIBRARIES   := 		#Library flags like -lm -lncurses
+LIBRARIES   := -lm	#Library flags like -lm -lncurses
 EXECUTABLE  := main
 
 all: $(BIN)/$(EXECUTABLE)
diff --git a/jmaths/bin/main b/jmaths/bin/main
old mode 100644
new mode 100755
index f01791f353208fc07b4d34bd50d4365ac69d1619..badce77ec9b6ddf0f0d6a3d8c008fb695eb507ae
GIT binary patch
literal 16256
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

literal 16928
zcmb<-^>JfjWMqH=W(GS35buBhM8p9?F(g<)84L^z4h$9yybKNu@(gkeYzzzxEMPH+
zJWM@|zQF_$htV7mE(0@Ep9F}(z`%e`%Rtq^XpoygLLeGsABc?&e*ig%fq?-=GeG?T
z(#HzY0OiBPVYDjLP#6sp2k8S#DS$LHFfgFe22lUOXk>jLr!3Hg=v!cmN*6%&RX}N&
zJ`fkAZv#}{2B<z5{Q=}4kpG}GEIdJO1Yrwkc%sv2&SpT@7Xj6WPP;&y%>bi8c7TL}
zpO&P6*y#4a__*u~fa=SDDnO@WK!!6gFu-V#9U!5=rzI(%Z~?K2!LVo!g4%~G9uhzS
z&cMI`qoKjdpr4bOWM-nDlcJlGnO9n&TVY|QYi6QXoUdmDwjSgzkR6~j<?a{Cz{J3C
z03-$tMsS`GVPF8KbCA5jr>b_Yo0l>-oZ|j{Vtps?6T`fxAoU<KKz4%EfD8udhdK$w
z1)0mh$-n^4lMw$mg2h2%AjZYibGaZI7p_1`vdC(r7#J9YkOiP@c^u*fIK<s>h)=;`
zFE<YLi*cwoXJBAZg1QZb%E?Sh21SP%LwtN@aelI;WqfgRVqO|UL1{@bLwtO3Nn&z#
zd~!y1d|F~=4nsjvW?o4eLwtO4MPhtfW?o`WW>qRfd_2e)klLb>_}s+IJO+0kPbcSi
zBRz9C%LL9c(lcd<_YCokPf0CGP0uVYNi7QTb<WApOASd($^n^{o|~TsH7y>Z6stn8
zN0=Cx8JNKF3rYvDIA>&F2FEohU4WE{XJ+z(O4tYn25=D}0_HO_BtiM5Qkk3#3``6;
zAjJ#}46t$rmcJJWLL^o|%MqA(0#uv>T2RBpVf-8R5PhID2TGq19s|PzBymvMhl#&H
z5(nvliGM&6huHy=`++15OUoef9Z+$029U2nA`pB4NgR|%AfgNmCy>NJ;RqAIfFuqw
z3no5FkA}c#2#kinXb6mkz-S1JhQLS<fzSMMzdV}XaCmgH-qdGc@Mt|y!u0=wNAnSm
z!{DI#Z`!2K!0_q6YO_8A1HU{2NPPxK=F`iE|NsA=0Oo@lh@W0wg!4g-*-tMI!ug;E
z+ozWsVf;`3RcpbfxiEmu`}AK`7mcrq#+OCoiz4$4-+FdljPvMx<k9@(LqLd6FRK|d
z1A|8|?|vo_WqXi;f#JXCCp`v+FB3d^Z6!he>}3@KQI<bSL_NA$&*?$D&iVfVzkCD8
zdxxR4N3ZQmkYumvBM_ze&!h8$$H8~@9tVFgdoUjJxcIL`#G{*aDM+&QKnchH2WkBB
zE({DX{h;t^umwpolxl~1G}|`mF)%QAbUrQN@#wZ~(_>(G@$%pQ|1VPh|NnoCwN{UT
zfid<lzdVZmm*xNe{|6Zq>e2bsqxp?Oibpq#ss`8`*B^!lJbG<y`4|{pZ20&8zejKA
z2ajIY7apC*JbG=d_!t;=fV}hK2uQBm^@B&}A&+j5^fiyp<1dzg%{b`M9r^(x3eqG9
z*Hn*H(-~}<?(o8F^1`a=Ha1Pi;hIGM{r?Yks7H6{j}#AM6R`J6SYN#P`~UyR!*I`c
z*1quQEPViSY^UoFk8aloovwdg>vg;Suy*}ZD*zTh)b09%@j|ETkJn-l@j5=R!b9Dz
ze?a1Yx?TTRyZ$IW)$RJjV@50v!~eVn>3Y$LtjlA@E>K{4d@p_A(Rsn6^+4&JZr4A!
z%<up?fz_iq_Xnd#w=dYSQ0*U~x*tQuU!aMf_ULx~0ZIlA;QZkj?$c}gS(AamG0d~`
znq#PE=U2xN$Id^Y9=*CxG#MCzeKh}q^6(4&KmY%G9Q?~%B5!ybntpvcKlyaNbLo8U
z_+R9{NAqDu56ioyuR!@bI@U49G1f88G5&B`njXJ=3&?9=`#?D#6yhK=K`KFfu;eH)
z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFr-6(5j+FMz~GXfmzP?lP?le;ke8pERFtY<
z#h{u~s-T)v3ih8*szN}3v#&x*Do98nwFE*HgJ~`X28g^1PI*RYW^2%#E*Ap>!;bg=
z|4(3GVBq)w>GVl_`2YU`0|P_EhyVXU^OcSt|Nno%z`$Vl>HmKYMh1r2pZ@>XU}Rvp
z|LOmK4@L$Ci_ic6XD~7_toZ!@{|3<50|NsCXs#9HP{yht2F3~jMrj^)jtPtqanKrq
z8}I-B*9R$ZVFypGsW31wn1JRS-~ay~021dDaO0Ek;^!{sXkf6HveGhE0Z%)E%mumI
z<Ng2tV2vQPQ2R<i>mJ_!{|}u)1IvKy>S17D2>kH>|6h=ZE1y6clQS<H(-$6g4h9C0
z{2B%Z2EC8}|Hq=phrs1Q9qjCn|Nn#M++q5w!O~#;Zx|RD`ak~vABv*i2dn_3hli1Y
z;l#)P|5HKoZhQj$OrCraeax<W3cW0@d>TEhE_?=UY#w|T&Ft=c4tabQj(i4=d>T%C
z3Ql|yPJ9ARd>r7p#t=pZh7TYA|3{wZ0~tArM?+vV1V%$(Gz3ONU^E0qLtr!nMnhmU
z1ZWciu=RVe^?K0m4tR|q$VMIz0m9JE2``8ZT2Bq?xG*p<NJ9Crb%D}QK5Q)>XdNg>
z2(~^D)IS07Ve()9{m%#S7l7t)85kH~eSsa&#dff@ekY*vp#B|5{az5kz`y`n?+Ic`
zfCvT#22m&tqoCRt7C_hQfu@c@atR;;+Rp+pVQcurK^z7Kh6zxMVd58{4uiS-08|}p
zZ6VBlIjA^H-S7Vp|1mN^mPG%9@+Uye`w!*A!u<o3Uj~)`3FX850X3d#6l~o$x`77J
z_;!HO0Z=*tN~5bM#D}f>ba!^PQqTxZD$Oe?Rj|}E)-%vGG%p2n4eN{y^bAZiA;N?V
z1h0K&gs<yIRt{SC3R@?RD$dLRTYru!&caZGC4iY3SQ%jH5>-7L11vqFinBAo(k-eu
z2LmiVQN=kKVCeu=oQnaL-cZH4;pq}poCmUa7g-P-KD-PHSmKMBfsdg8t2jSH16FYX
z2H1WLWGk2%1Q{ft<p8R<5Mmz#k_0n@FavBoK9Vp4GlK}j3Fvx#RB=)GdSg^^F$P$9
zf+{Y~fGs^UGf2SmKdO33&}I{4AuyYnL5e{DdC&zc3R-IqE8U<1&~@`H3?Kg^L?A3s
zxyi&J!0-VrJo&)ujs+MLpzEU{su>s*q2jP|7$y!{pU#Nn9#}a6S{KjAfEf;;#rhz7
zVdXl^oJz1;F~f5Pc%KZW`$6_#^VfW^IU)=?;L$6X=@1&5`n6ywQH=Q72Q~*YzK%oH
z!|D?-mw|!d7MOvVe%^x3!HnN~jG*=1nE8U45wtHsfI$G7ZlT32gD@l3B+D=lERLB@
z^ugwU9fd+TGJ>+ABu4t-1*vDk%rBtvMr`{eQb6iaOonhOz~TZ7%b=RTV|)w@47Ff!
zh#F*a4%9siXz6(+*k8yhA?zKD3=D!yk_@o&8Y0TTa1<mC+R*{cr_kz|;R@JZ0fq&_
z5S8FDK?Vkfo#6cgQVbGk_AY{|hm|MbF;fNxh9_WmV&*&0ek36V0fv>(`~n{HWME+U
z3N{B~Co;*;1aUul{*`9J9>1ncko4dVbw7B_lYxQ33M$SF6$g!bg6wf(!m(c@xu~SL
zq%<u}FPQ<ceIvdkH$EA(fdjN-BqcvSJtsdYF(*EyB)_OQKC!fdAvr&{ASbmXHAT<D
zz|4RlJ|2rA&~}o{_{5^3#LD>8ypp0yhP0x@+|>A#(%jrihWL0SUVLU=W(kT?(54f;
zWQO>7w;)Gf*LYVym-u+ljuvEfDGc#0k$#T8p3bN;#U+VFB@FTL?tY>1t{zYmJY0ep
z;@y4xog97Q{oUMxT|?qS9G!ezL8gK?yCfHvf?W*RpMnUB5ag{apiMLm4zSHI;EgY-
zDTyVC7#nL4icFw;Y!D(KZJ<d5%xyNPYU1NTMnm?^FvQ2BZlZ}#DbA12NX$zCZLsn5
zk1sAs$;^u{Ely2=84L0dC|nuh<CBVup~is16%<-XJA)9Gnlr@5hxj_fLL0QD2kSna
zfB<I~29OWp!;H|j4j~K!`I14exH7jSF^NI1xTFX|XTVsQc_pbu1q^z5`6a1(>3OAk
z1x5J<sYNA~NJ2@anK>!CnJG{qM<-9+lEicdu=0$=;tU48l*+u~%3KItQUsAHOD!tS
z%+EvN#1}E>6{Y4Rf;2!`1vw=Qdf))kE66F)OV2N105ghHlNt0%QY%Ur^wKi(G8y!W
z@<H*ypqH8fO|uy(MF<|mjCgQ5hv<N@Q!4Wkb2F0}^dQ=kii;WalJj$OQ}aMGB%oYL
zJ_gn3pt=s$FTk}=6lMcREsPDKl^GZqKz#(5eptH`Mnj8BkWw&)^$Wlp1_lN*H2tvl
zDU1fqBf->yXjr)mVuP?JntoV27Dl7nkFGzQfq~)M|Nr?g_ruz|FdAk*v^xap#DFY@
z;zVd445lB}E{4$`pz1(j1PVKt|6%>5OmI6DR98b3!rIR;8rIK)$U^oh!q_0X5VZCd
z$^Ec)HjIW=^Wc5NAoVbJ!st2%1_n@{4917G$6++A`a*X<$Se@<1-G9N?uWJ8VKl6t
zh#r10|4)bNcLEuP)bE7#KVkh;kbaOJ^zd5<ZvQaA{Rf^{1DOSFcY@M4hzrB$@jnMm
zKdiq1qrr2RFwNjP9m0Vc&#)X#KdfH?qhabGx<G9s2n!~@0Zl)w{{f?6;SbS;sUOtN
z0HrHX_<+>F+7&Q56s=zevlpZmg!iM_59`msXxMlMNG%AXhu=}CepvcJ-@ly>(u9Oz
z@dpz+i>4peKZ4PqxnY=E5RGm>Xx%f&|1kSu{U{g>n#Ts|gJE?0pE58ofchk`V1l)~
zVf&fU)x-EO`Xd7a13xqmgY1Cy%T_@5m&4S7<Ukn4htZ(+94PK!_QU#bu>I+v_8&+e
zDF1<Im_ArMu7-vmOh0U#X92Wf3Clkqy&w$J52M)_A!Q0oKfIj`+K`Nt-a&dn7^V-z
z24T=#I7kepAJ*;^fa(Xyfz-h;D6U{^5G@F`AF3QA1jaD^T3{Z6fayo3VR4U8#lYYI
zHE;zea2XgFWI<~JKx-nPia=!vh{=f*cOX6tzW`NC3=9l$Xokb=g{cEI%VB<piGgT0
POAyJxAcdv@jmrQ4zc#{F

diff --git a/jmaths/include/jmath.h b/jmaths/include/jmath.h
new file mode 100644
index 0000000..a19bfd6
--- /dev/null
+++ b/jmaths/include/jmath.h
@@ -0,0 +1,28 @@
+/*
+	* HEADER JMATH
+	* Author : Jonas S.
+	* Date   : 25/10/2021
+	! MATH ALGORITHMS
+*/
+
+#include <stdio.h>
+#include <stdint.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <math.h>
+
+#ifndef _JMATH_H_
+#define _JMATH_H_
+
+// MACROS
+#define MIN(X, Y) (((X) < (Y)) ? (X) : (Y))
+
+
+// DEFINES
+
+// PROTOTYPE FUNCTIONS
+uint64_t GCD(uint64_t a, uint64_t b);
+uint64_t LCM(uint64_t a, uint64_t b);
+bool isPrime(uint64_t n);
+
+#endif
\ No newline at end of file
diff --git a/jmaths/src/jmath.c b/jmaths/src/jmath.c
new file mode 100644
index 0000000..f368ae7
--- /dev/null
+++ b/jmaths/src/jmath.c
@@ -0,0 +1,70 @@
+/*
+	* CODE JMATH
+	* Author : Jonas S.
+	* Date   : 25/10/2021
+	! MATH ALGORITHMS
+*/
+
+
+#include "../include/jmath.h"
+#include <stdio.h>
+#include <stdint.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <math.h>
+
+
+/**
+ * @brief Get the Greatest Common Divider
+ * 
+ * @param a
+ * @param b
+ * @return int64_t
+ * ! Source : https://en.wikipedia.org/wiki/Euclidean_algorithm
+ */
+uint64_t GCD(uint64_t a, uint64_t b)
+{
+	int64_t temp;
+	while(b != 0)
+	{
+		temp = b;
+		b = a % b;
+		a = temp;
+	}
+	return a;
+}
+
+/**
+ * @brief Get the Lowest Common Multiplier
+ * 
+ * @param a
+ * @param b
+ * @return int64_t
+ */
+uint64_t LCM(uint64_t a, uint64_t b)
+{
+	return( a / (GCD(a, b)) * b);
+}
+
+
+/**
+ * @brief Check if a number is prime
+ * 
+ * @param n Number to check
+ * @return bool
+ */
+bool isPrime(uint64_t n)
+{
+	if(n == 1){return false;}
+	if(n == 2){return true;}
+	if(n > 2 && (n % 2 == 0)){return false;}
+	for (long i = 3; i <= sqrt(n) + 1; i++)
+	{
+		if(n % i == 0){return false;}
+	}
+	return true;
+}
+
+
+
+
diff --git a/jmaths/src/main.c b/jmaths/src/main.c
index 18eaabc..0ba3b8e 100644
--- a/jmaths/src/main.c
+++ b/jmaths/src/main.c
@@ -2,73 +2,53 @@
 	* BASIC MATHS
 	* Author : Jonas S.
 	* Date   : 29/09/2021
-	! PPCM, PGDC, 
+	! TESTING MATH FUNCTIONS 
 */
 
 #include <stdio.h>
+#include <stdint.h>
+#include <stdbool.h>
+#include <time.h>
 
-// DEFINE 
-#define MIN(X, Y) (((X) < (Y)) ? (X) : (Y))
-
-long PPCM(unsigned long m, unsigned long n);
-long PPCM_V2(unsigned long m, unsigned long n);
-long PPCD(unsigned long n, unsigned long m);
+#include "../include/jmath.h"
 
 
 int main()
 {
-	long n, m;
-	printf("Donnez vos nombre :\n");
-	scanf("%lu %lu", &n, &m );
-	printf("Le PPCM de %lu et %lu est %lu\n", n, m, PPCM(n, m));
-	printf("Le PPCM de %lu et %lu est %lu\n", n, m, PPCM_V2(n, m));
-	printf("Le PPCD de %lu et %lu est %lu\n", n, m, PPCD(n, m));
-
-
-	return 0;
-}
-
-long PPCM(unsigned long n, unsigned long m)
-{
-	int mul_n = n, mul_m = m;
-
-	while(mul_m != mul_n)
-	{
-		if (mul_n < mul_m){mul_n += n;}
-		else if(mul_n > mul_m){mul_m += m;}
-	}
-	return mul_n;
-}
-
-long PPCM_V2(unsigned long n, unsigned long m)
-{
-	int mul_n = n;
-	while(mul_n % m)
-	{
-		mul_n += n;
-	}
-	return mul_n;
-}
-
-long PPCD(unsigned long n, unsigned long m)
-{
-	long cn = n; // changing n
-	while((m % cn != 0) || (n % cn != 0))
+	uint64_t a, b, r;
+	double timeT;
+
+	printf("Chose you number : ");
+	scanf(" %ld %ld", &a, &b);
+
+	clock_t t;
+
+	// PGCD
+	t = clock();
+	r = GCD(a, b);
+	t = clock() - t;
+	timeT = ((double)t) / CLOCKS_PER_SEC;
+	printf("COMPUTED PGCD IN %lfs\n", timeT);
+	printf("PGCD(%ld, %ld) = %ld \n", a, b, r);
+
+
+	// PPCM
+	t = clock();
+	r = LCM(a, b);
+	t = clock() - t;
+	timeT = ((double)t) / CLOCKS_PER_SEC;
+	printf("COMPUTED PPCM IN %lfs\n", timeT);
+	printf("PPCM(%ld, %ld) = %ld \n", a, b, r);
+
+	// PRIME
+	t = clock();
+	for (int i = 0; i < 100; i++)
 	{
-		cn -= 1;
+		printf("%d is %s\n", i, isPrime(i) ? "Prime": "Not Prime"); 
 	}
-	return cn;
-}
+	t = clock() - t;
+	timeT = ((double)t) / CLOCKS_PER_SEC;
+	printf("COMPUTED 100 NUMBER FOR PRIMABILITY IN %lfms\n", timeT * 1000);
 
-long PPCD_V2(unsigned long n, unsigned long m)
-{
-	long dividende = n, diviseur = m, quotient, reste;
-	while(reste != 0)
-	{
-		quotient = dividende / diviseur;
-		reste = dividende % diviseur;
-		dividende = diviseur;
-
-	}
-	return diviseur;
+	return 0;
 }
\ No newline at end of file
-- 
GitLab