aboutsummaryrefslogtreecommitdiff
path: root/c05/ex05
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2019-07-09 10:23:25 +0200
committerCharles <sircharlesaze@gmail.com>2019-07-09 10:23:25 +0200
commit2bc94312042100432ec332abd3c00104d0d095a2 (patch)
tree6c60a0fde7b2d8bc984845f6a412171df977e1dc /c05/ex05
parent03b4d8a03fb1b2cf93aaac0dc9d317ff9c2ba705 (diff)
downloadpiscine-2bc94312042100432ec332abd3c00104d0d095a2.tar.gz
piscine-2bc94312042100432ec332abd3c00104d0d095a2.tar.bz2
piscine-2bc94312042100432ec332abd3c00104d0d095a2.zip
c07/c08 start, c05 faster, better, stronger
Diffstat (limited to 'c05/ex05')
-rw-r--r--c05/ex05/ft_sqrt.c30
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));
}