aboutsummaryrefslogtreecommitdiff
path: root/c05
diff options
context:
space:
mode:
authorCabergs Charles <cacharle@e-r6-p7.s19.be>2019-07-07 15:29:30 +0200
committerCabergs Charles <cacharle@e-r6-p7.s19.be>2019-07-07 15:29:30 +0200
commit1fd0ebe76b81187fa428b4d699fb70cd4407fef5 (patch)
tree32827b5be808bf3123d46856bb753fc190fd3611 /c05
parent8d88f6751542e7654025dc60d6886c7b26f6993b (diff)
downloadpiscine-1fd0ebe76b81187fa428b4d699fb70cd4407fef5.tar.gz
piscine-1fd0ebe76b81187fa428b4d699fb70cd4407fef5.tar.bz2
piscine-1fd0ebe76b81187fa428b4d699fb70cd4407fef5.zip
c04/c05 testing + c06
Diffstat (limited to 'c05')
-rw-r--r--c05/ex00/ft_iterative_factorial.c26
-rw-r--r--c05/ex01/ft_recursive_factorial.c20
-rw-r--r--c05/ex02/ft_iterative_power.c28
-rw-r--r--c05/ex03/ft_recursive_power.c22
-rw-r--r--c05/ex04/ft_fibonacci.c22
-rw-r--r--c05/ex05/ft_sqrt.c25
-rw-r--r--c05/ex06/ft_is_prime.c31
-rw-r--r--c05/ex07/ft_find_next_prime.c40
-rw-r--r--c05/main.c76
9 files changed, 290 insertions, 0 deletions
diff --git a/c05/ex00/ft_iterative_factorial.c b/c05/ex00/ft_iterative_factorial.c
new file mode 100644
index 0000000..fa64f59
--- /dev/null
+++ b/c05/ex00/ft_iterative_factorial.c
@@ -0,0 +1,26 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_iterative_factorial.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2019/07/06 16:48:21 by cacharle #+# #+# */
+/* Updated: 2019/07/06 17:14:26 by cacharle ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+int ft_iterative_factorial(int nb)
+{
+ int acc;
+ int i;
+
+ if (nb < 0)
+ return (0);
+ if (nb == 0)
+ return (1);
+ acc = 1;
+ while (nb > 0)
+ acc *= nb--;
+ return (acc);
+}
diff --git a/c05/ex01/ft_recursive_factorial.c b/c05/ex01/ft_recursive_factorial.c
new file mode 100644
index 0000000..615cd04
--- /dev/null
+++ b/c05/ex01/ft_recursive_factorial.c
@@ -0,0 +1,20 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_recursive_factorial.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2019/07/06 17:15:10 by cacharle #+# #+# */
+/* Updated: 2019/07/06 17:18:58 by cacharle ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+int ft_recursive_factorial(int nb)
+{
+ if (nb < 0)
+ return (0);
+ if (nb == 0 || nb == 1)
+ return (1);
+ return nb * ft_recursive_factorial(nb - 1);
+}
diff --git a/c05/ex02/ft_iterative_power.c b/c05/ex02/ft_iterative_power.c
new file mode 100644
index 0000000..ccfd359
--- /dev/null
+++ b/c05/ex02/ft_iterative_power.c
@@ -0,0 +1,28 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_iterative_power.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2019/07/06 17:20:15 by cacharle #+# #+# */
+/* Updated: 2019/07/06 17:39:06 by cacharle ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+int ft_iterative_power(int nb, int power)
+{
+ int acc;
+
+ if (power < 0)
+ return (0);
+ if (power == 0)
+ return (1);
+ acc = 1;
+ while (power > 0)
+ {
+ acc *= nb;
+ power--;
+ }
+ return (acc);
+}
diff --git a/c05/ex03/ft_recursive_power.c b/c05/ex03/ft_recursive_power.c
new file mode 100644
index 0000000..94c4fbd
--- /dev/null
+++ b/c05/ex03/ft_recursive_power.c
@@ -0,0 +1,22 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_recursive_power.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2019/07/06 17:39:43 by cacharle #+# #+# */
+/* Updated: 2019/07/06 19:32:17 by cacharle ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+int ft_recursive_power(int nb, int power)
+{
+ if (power < 0)
+ return (0);
+ if (power == 0)
+ return (1);
+ if (power == 1)
+ return (nb);
+ return nb * ft_recursive_power(nb, power - 1);
+}
diff --git a/c05/ex04/ft_fibonacci.c b/c05/ex04/ft_fibonacci.c
new file mode 100644
index 0000000..66ff9b1
--- /dev/null
+++ b/c05/ex04/ft_fibonacci.c
@@ -0,0 +1,22 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_fibonacci.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2019/07/06 19:34:02 by cacharle #+# #+# */
+/* Updated: 2019/07/06 19:37:37 by cacharle ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+int ft_fibonacci(int index)
+{
+ if (index < 0)
+ return (-1);
+ if (index == 0)
+ return (0);
+ if (index == 1 || index == 2)
+ return (1);
+ return ft_fibonacci(index - 1) + ft_fibonacci(index - 2);
+}
diff --git a/c05/ex05/ft_sqrt.c b/c05/ex05/ft_sqrt.c
new file mode 100644
index 0000000..8a86489
--- /dev/null
+++ b/c05/ex05/ft_sqrt.c
@@ -0,0 +1,25 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_sqrt.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2019/07/06 20:06:48 by cacharle #+# #+# */
+/* Updated: 2019/07/06 20:11:19 by cacharle ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+int ft_sqrt(int nb)
+{
+ int i;
+
+ i = 0;
+ while (i <= nb)
+ {
+ if (i * i == nb)
+ return (i);
+ i++;
+ }
+ return (0);
+}
diff --git a/c05/ex06/ft_is_prime.c b/c05/ex06/ft_is_prime.c
new file mode 100644
index 0000000..05628a2
--- /dev/null
+++ b/c05/ex06/ft_is_prime.c
@@ -0,0 +1,31 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_is_prime.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2019/07/06 20:17:59 by cacharle #+# #+# */
+/* Updated: 2019/07/07 08:27:21 by cacharle ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+int ft_is_prime(int nb)
+{
+ int i;
+
+ if (nb <= 1)
+ return (0);
+ if (nb <= 3)
+ return (1);
+ if (nb % 2 == 0 || nb % 3 == 0)
+ return (0);
+ i = 5;
+ while (i * i <= nb)
+ {
+ if (nb % i == 0 || nb % (i + 2) == 0)
+ return (0);
+ i += 6;
+ }
+ return (1);
+}
diff --git a/c05/ex07/ft_find_next_prime.c b/c05/ex07/ft_find_next_prime.c
new file mode 100644
index 0000000..a83f308
--- /dev/null
+++ b/c05/ex07/ft_find_next_prime.c
@@ -0,0 +1,40 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_find_next_prime.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2019/07/07 07:50:11 by cacharle #+# #+# */
+/* Updated: 2019/07/07 08:29:02 by cacharle ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+
+int is_prime(int nb)
+{
+ int i;
+
+ if (nb <= 1)
+ return (0);
+ if (nb <= 3)
+ return (1);
+ if (nb % 2 == 0 || nb % 3 == 0)
+ return (0);
+ i = 5;
+ while (i * i <= nb)
+ {
+ if (nb % i == 0 || nb % (i + 2) == 0)
+ return (0);
+ i += 6;
+ }
+ return (1);
+}
+
+int ft_find_next_prime(int nb)
+{
+ while (!is_prime(nb))
+ nb++;
+ return (nb);
+}
+
diff --git a/c05/main.c b/c05/main.c
new file mode 100644
index 0000000..ca9a1c1
--- /dev/null
+++ b/c05/main.c
@@ -0,0 +1,76 @@
+#include <stdio.h>
+#include <string.h>
+#include <limits.h>
+#include "ex00/ft_iterative_factorial.c"
+#include "ex01/ft_recursive_factorial.c"
+#include "ex02/ft_iterative_power.c"
+#include "ex03/ft_recursive_power.c"
+#include "ex04/ft_fibonacci.c"
+#include "ex05/ft_sqrt.c"
+#include "ex06/ft_is_prime.c"
+#include "ex07/ft_find_next_prime.c"
+
+int main()
+{
+ printf("%d! = %d\n", -1, ft_iterative_factorial(-1));
+ printf("%d! = %d\n", 0, ft_iterative_factorial(0));
+ printf("%d! = %d\n", 1, ft_iterative_factorial(1));
+ printf("%d! = %d\n", 4, ft_iterative_factorial(4));
+ printf("%d! = %d\n", 6, ft_iterative_factorial(6));
+ printf("%d! = %d\n", 10, ft_iterative_factorial(10));
+
+ printf("---------------------\n");
+ printf("%d! = %d\n", -1, ft_recursive_factorial(-1));
+ printf("%d! = %d\n", 0, ft_recursive_factorial(0));
+ printf("%d! = %d\n", 1, ft_recursive_factorial(1));
+ printf("%d! = %d\n", 4, ft_recursive_factorial(4));
+ printf("%d! = %d\n", 6, ft_recursive_factorial(6));
+ printf("%d! = %d\n", 10, ft_recursive_factorial(10));
+
+ printf("---------------------\n");
+ printf("%d^%d = %d\n", 2, 0, ft_iterative_power(2, 0));
+ printf("%d^%d = %d\n", 2, 2, ft_iterative_power(2, 4));
+ printf("%d^%d = %d\n", 3, 3, ft_iterative_power(3, 3));
+ printf("%d^%d = %d\n", 4, 5, ft_iterative_power(4, 5));
+
+ printf("---------------------\n");
+ printf("%d^%d = %d\n", 2, 0, ft_recursive_power(2, 0));
+ printf("%d^%d = %d\n", 2, 2, ft_recursive_power(2, 4));
+ printf("%d^%d = %d\n", 3, 3, ft_recursive_power(3, 3));
+ printf("%d^%d = %d\n", 4, 5, ft_recursive_power(4, 5));
+
+ printf("---------------------\n");
+ printf("F%d = %d\n", -1, ft_fibonacci(-1));
+ printf("F%d = %d\n", 0, ft_fibonacci(0));
+ printf("F%d = %d\n", 1, ft_fibonacci(1));
+ printf("F%d = %d\n", 2, ft_fibonacci(2));
+ printf("F%d = %d\n", 3, ft_fibonacci(3));
+ printf("F%d = %d\n", 8, ft_fibonacci(8));
+ printf("F%d = %d\n", 30, ft_fibonacci(30));
+ /*printf("F%d = %d\n", 41, ft_fibonacci(41));*/
+
+ printf("---------------------\n");
+ printf("sqrt(%d) = %d\n", -36, ft_sqrt(-36));
+ printf("sqrt(%d) = %d\n", 0, ft_sqrt(0));
+ printf("sqrt(%d) = %d\n", 4, ft_sqrt(4));
+ printf("sqrt(%d) = %d\n", 9, ft_sqrt(4));
+ printf("sqrt(%d) = %d\n", 678, ft_sqrt(678 * 678));
+
+ printf("---------------------\n");
+ printf("prime(%d) = %d\n", 3, ft_is_prime(3));
+ printf("prime(%d) = %d\n", 25, ft_is_prime(25));
+ printf("prime(%d) = %d\n", 17, ft_is_prime(17));
+ printf("prime(%d) = %d\n", 21, ft_is_prime(21));
+ printf("prime(%d) = %d\n", 36, ft_is_prime(36));
+ printf("prime(%d) = %d\n", 2147483617, ft_is_prime(2147483617));
+ /*printf("prime(%d) = %d\n", 2147483629, ft_is_prime(2147483629));*/
+ /*for (int i = INT_MAX; i > INT_MAX - 100; i--)*/
+ /*printf("%d is %d\n", i, ft_is_prime(i));*/
+
+ printf("---------------------\n");
+ printf("nextp(%d) = %d\n", 21, ft_find_next_prime(21));
+ printf("nextp(%d) = %d\n", 23, ft_find_next_prime(23));
+ printf("nextp(%d) = %d\n", 2147483600, ft_find_next_prime(2147483600));
+ /*for (int i = INT_MAX; i > INT_MAX - 100; i--)*/
+ /*printf("%d is %d\n", i, ft_find_next_prime(i));*/
+}