diff options
| author | Charles <sircharlesaze@gmail.com> | 2019-07-07 15:29:30 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2019-07-07 15:29:30 +0200 |
| commit | a2ef228b981df5ad417a0e8377e1e832002a7644 (patch) | |
| tree | 32827b5be808bf3123d46856bb753fc190fd3611 /c05 | |
| parent | 79f8ba0b777f3361002ed2ae0c6c6f8f353ca731 (diff) | |
| download | piscine-a2ef228b981df5ad417a0e8377e1e832002a7644.tar.gz piscine-a2ef228b981df5ad417a0e8377e1e832002a7644.tar.bz2 piscine-a2ef228b981df5ad417a0e8377e1e832002a7644.zip | |
c04/c05 testing + c06
Diffstat (limited to 'c05')
| -rw-r--r-- | c05/ex00/ft_iterative_factorial.c | 26 | ||||
| -rw-r--r-- | c05/ex01/ft_recursive_factorial.c | 20 | ||||
| -rw-r--r-- | c05/ex02/ft_iterative_power.c | 28 | ||||
| -rw-r--r-- | c05/ex03/ft_recursive_power.c | 22 | ||||
| -rw-r--r-- | c05/ex04/ft_fibonacci.c | 22 | ||||
| -rw-r--r-- | c05/ex05/ft_sqrt.c | 25 | ||||
| -rw-r--r-- | c05/ex06/ft_is_prime.c | 31 | ||||
| -rw-r--r-- | c05/ex07/ft_find_next_prime.c | 40 | ||||
| -rw-r--r-- | c05/main.c | 76 |
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));*/ +} |
