diff options
| author | Cabergs Charles <cacharle@e-r6-p7.s19.be> | 2019-07-09 10:23:25 +0200 |
|---|---|---|
| committer | Cabergs Charles <cacharle@e-r6-p7.s19.be> | 2019-07-09 10:23:25 +0200 |
| commit | 90076f97a1de6b60968e98d6c7a8b520ebda3c8e (patch) | |
| tree | 6c60a0fde7b2d8bc984845f6a412171df977e1dc /c05/ex05 | |
| parent | 803d5e42138e1f0f69f6d8953aea5cd23f5b72ee (diff) | |
| download | piscine-90076f97a1de6b60968e98d6c7a8b520ebda3c8e.tar.gz piscine-90076f97a1de6b60968e98d6c7a8b520ebda3c8e.tar.bz2 piscine-90076f97a1de6b60968e98d6c7a8b520ebda3c8e.zip | |
c07/c08 start, c05 faster, better, stronger
Diffstat (limited to 'c05/ex05')
| -rw-r--r-- | c05/ex05/ft_sqrt.c | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/c05/ex05/ft_sqrt.c b/c05/ex05/ft_sqrt.c index a72af2d..aef9630 100644 --- a/c05/ex05/ft_sqrt.c +++ b/c05/ex05/ft_sqrt.c @@ -6,20 +6,28 @@ /* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/07/06 20:06:48 by cacharle #+# #+# */ -/* Updated: 2019/07/08 12:08:36 by cacharle ### ########.fr */ +/* Updated: 2019/07/09 06:38:18 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ -int ft_sqrt(int nb) +int bin_search_sqrt(long unsigned int nb, unsigned int low, unsigned int up) { - int i; + long unsigned int mid; + + mid = low + ((up - low) / 2); + if (mid * mid == nb) + return (mid); + if (low > up) + return (0); + if (mid * mid < nb) + return (bin_search_sqrt(nb, mid + 1, up)); + else + return (bin_search_sqrt(nb, low, mid - 1)); +} - i = 0; - while (i <= nb) - { - if (i * i == nb) - return (i); - i++; - } - return (0); +int ft_sqrt(int nb) +{ + if (nb < 0) + return (0); + return (bin_search_sqrt(nb, 0, nb)); } |
