From 34d6c0f98e2e312ace146c1f988d957a09ed97b6 Mon Sep 17 00:00:00 2001
From: Jonas <jonas@stirnemann.xyz>
Date: Mon, 25 Oct 2021 13:18:25 +0200
Subject: [PATCH] Added factorial

---
 jmaths/bin/main        | Bin 16256 -> 16288 bytes
 jmaths/include/jmath.h |   1 +
 jmaths/src/jmath.c     |  15 +++++++++++++++
 jmaths/src/main.c      |  21 ++++++++++++++-------
 4 files changed, 30 insertions(+), 7 deletions(-)

diff --git a/jmaths/bin/main b/jmaths/bin/main
index badce77ec9b6ddf0f0d6a3d8c008fb695eb507ae..ce25a65a07bc049e448f13361d774287129c15f0 100755
GIT binary patch
delta 1342
zcmZpuUr;|mgYm&c&HG%cYz$za$~IYuQIB&96PU*^WwR%vKBJ<5B7}=hhd_iGLMG2-
zx-W9k&p70M@tyv;OCHR6mGt}6Hq+1BHuo^+^D-7~{v%+=WY$^x!sEE>2Sx@429M*e
zKR|Z87V_wJ{oujB-t~t^r|SogX4fB#9^I}#Jgi+`lsy5-#ZER5manhnVPNp+JiY^D
z;R}Jk|NndRhTib#b-m!xdCa4iwFp_7@$ditFV6h=|KFq2^}%u1Gax;$9lKr6c+BwV
zJpLl%-~azD2TC|SdRbj~7#Lo&d-Sq8@-Q%T`=0UWJk)v4qnFhN*|<f2{{QD`c0I$`
zTziJIZs&{Q$qR)g>re79Fnr>VJNSuT(DlV9egR()!MYnP8hIkkgTD?$<Q?$nWqrmC
zaXZN0FC72;|NlY;>Nt<?&>J4zAWvKaxy%mauTIwwFaG@g|KCH~^#RBOY5eaGeDdJe
za((cLUw}6VY(d<?da%77-L5avJov%3tVg!x4#)tQ;oZI;AfdDvsst1uFLwU^|Nq4l
zkh)IS2WSrY265kq7bPHhY!0dCJ;jX_0LTsrh1vr4ZV1Q#42O6^m4F>$2yzGyNFCTA
zpwKw}VlFHwKL5fR6khxSydYEHQGo0MCaCdX7hDDz01D&oP-rmx=Yqrs*!C^ICfkaN
zvvvRa|NrFS&C#MSIVUOTPVQ8Y7Iyac4G0Z!bx|-hQ1A=&b#e^~p1fN@da|xU%;abV
z&U!aT=MeuOPe&gGPd^3KoU~#t29S`3YEFu#f~|sTPKp8-$O?vr7ClEW!=c}SQJUEr
zlxsK{7#IZJ|Nq~?z`#)O{{R0C3=9kn@BjZl!N9<9;r;*r1q=)fJ3svY|A2vk;pd0{
z{}~t=7|cHY|F6Kvz@Yf)|9=NYb_RyTPyhcXOg2<hmyCG-|Gyf@4i|O-5T(Mvz+eJ0
za&n=fy5x>`|Nn!9K~fA13?d8+3?&Q<3>zkIR1{~r_<r&!MLDLA?<c=flw;(Z%&8>L
zcysbeMQLdsMu_FhKsnWwPoRy-nU{@uE)x$s$7V;RpInnWbUm0P#5P~j-N(#0Ve&*n
zcP0VF$+rymF-eF`o@I1S@F*h#gAjuNgP}0QW{1g%#`27(CN~<3OJ0M@6+-2}mM}0d
z+@8GASe)_x<by`yj6WtnG!|!NVParVn7olmm{D%Bpout(J`)4O<cWsDOblL|9Zl{q
zvZN&@mu!|Xd&0Q+ulZwUCUe%wkF52$B*Y+=N{CICvT<V+nEcR2esY72fFMRGHhH0q
rzF-EljDyiSn;+WzXJoXP{Ls#vvj7yB3=9kblNIgF84pa3v{wfJNa^g@

delta 1131
zcmZ2b-%vk6gYm#b&HG%LtPEg~$vRnxQIFGw3Cv?~+3d-v&#3r90m4P6eIUXNK9grM
z-4~fwy{&y-+%+9d$IrEqV(U%PwVeGn_b})4G8%3EBVflgxk^~HelHILgGcA_9Uz@A
z0{;I0@6j82!=u;rf=A~uk6zYI$kL8~|Nno%15(rJ`oN<*^oB<_NZmD$&f_oi{{8>&
z(dqi)#hX9>|9fb=KJe&teUQfg{=g>>el6DrpZEoMrFa<_KJmvL{KPNl`oW{y^+TEm
zzjfXLk6zX=s4a{P3=A*MfDC{c-tGGW;t(&W60kd0{`vp^Ma$$u5wZGb5a+yjkpj|&
z)!s=wnD&CL{lg9MJJ?zmkbVqnKR}g$tyKhB`{y^<qYsX|o?&2M@L_oE*zJ18V+JS;
zX8isCzvVy)r$;aA1#Sk0*X$m>tY^6y7`lDWcyu1>Jm=BNdIH(JOTYjBZ+1Py*j#%i
zxo+o+#giwBNJd=bMsn>ZegWSPpZEn>4}(P`Po#P9*MSJI`^%t)f!$yD`~QD%EP8Z@
z{z&oA7E#q;U|=X=ec|!@|NoPR88(ZHz2uzSz`kdag6`xpg_y~@3ew^rZ#nz>284#V
zx+oYL7%2FK`Z~D=O^#NOW@MQBUqRFrl%zNq7#J+x|Nq~>z`!u${r~?f7#J8<y#N3I
z00RTVkN5xoXD~1@JpAzg{|yEP2E~v6|NmfMV2Jzp|Gxwy1B2(M|Nku}Cn~B-cD(=p
zUkzlT3%dY_Qej|VFkxU|*f4paqPpaZcmMx`g+Wpb3=AS5$1^Z6Jed4YQJjhK!{lFz
za!iUJCQB*FG1^VGRFW6x{P_RBCMaLH@(HvtIrFkHD=_h}b8Mcd^qp&R1AEZq4qXqX
z7}3p_boVhcI!vBu=+5*)Ve&1*eM~W;lV=&7o7`Y5;dzvifkA*lib22uYA=+!$jHDT
z#2~<6C=3w*Tg1S?a1APcQV=2z({^j}K_hY5&x{NVf=rSaru}DRU{IL6kx7_Ul8J#q
z2*hI4n(SyI&gi;1(&P@~W-GJDjGGlK9xyXiu}o&N(c_8{g_s{BI@!v`jq%0gMhp4L
z3v2`gF|z#RgEsnt7K#w%Fq&sGqwRl2Muo|Y_U4=spipLDVDO&oXm8HAcygt^Isn(=
BewhFO

diff --git a/jmaths/include/jmath.h b/jmaths/include/jmath.h
index a19bfd6..6304b53 100644
--- a/jmaths/include/jmath.h
+++ b/jmaths/include/jmath.h
@@ -24,5 +24,6 @@
 uint64_t GCD(uint64_t a, uint64_t b);
 uint64_t LCM(uint64_t a, uint64_t b);
 bool isPrime(uint64_t n);
+uint64_t fact(uint64_t n);
 
 #endif
\ No newline at end of file
diff --git a/jmaths/src/jmath.c b/jmaths/src/jmath.c
index f368ae7..dd83243 100644
--- a/jmaths/src/jmath.c
+++ b/jmaths/src/jmath.c
@@ -65,6 +65,21 @@ bool isPrime(uint64_t n)
 	return true;
 }
 
+/**
+ * @brief Get the factorial of a number
+ * 
+ * @param n
+ * @return uint64_t
+ */
+uint64_t fact(uint64_t n)
+{
+	uint64_t r = 1;
+	for (uint64_t i = 2; i <= n; i++)
+	{
+		r *= i;	
+	}
+	return r;
+}
 
 
 
diff --git a/jmaths/src/main.c b/jmaths/src/main.c
index 0ba3b8e..e41f9e6 100644
--- a/jmaths/src/main.c
+++ b/jmaths/src/main.c
@@ -23,6 +23,16 @@ int main()
 
 	clock_t t;
 
+	// PRIME
+	t = clock();
+	for (int i = 0; i < 10; i++)
+	{
+		printf("%d is %s\n", i, isPrime(i) ? "Prime": "Not Prime"); 
+	}
+	t = clock() - t;
+	timeT = ((double)t) / CLOCKS_PER_SEC;
+	printf("COMPUTED 10 NUMBERS FOR PRIMABILITY IN %lfms\n", timeT * 1000);
+
 	// PGCD
 	t = clock();
 	r = GCD(a, b);
@@ -31,7 +41,6 @@ int main()
 	printf("COMPUTED PGCD IN %lfs\n", timeT);
 	printf("PGCD(%ld, %ld) = %ld \n", a, b, r);
 
-
 	// PPCM
 	t = clock();
 	r = LCM(a, b);
@@ -40,15 +49,13 @@ int main()
 	printf("COMPUTED PPCM IN %lfs\n", timeT);
 	printf("PPCM(%ld, %ld) = %ld \n", a, b, r);
 
-	// PRIME
+	// FACTORIAL
 	t = clock();
-	for (int i = 0; i < 100; i++)
-	{
-		printf("%d is %s\n", i, isPrime(i) ? "Prime": "Not Prime"); 
-	}
+	r = fact(a);
 	t = clock() - t;
 	timeT = ((double)t) / CLOCKS_PER_SEC;
-	printf("COMPUTED 100 NUMBER FOR PRIMABILITY IN %lfms\n", timeT * 1000);
+	printf("COMPUTED FACTORIAL IN %lfs\n", timeT);
+	printf("FACT(%ld) = %ld \n", a, r);
 
 	return 0;
 }
\ No newline at end of file
-- 
GitLab