How to get the square root rounded down to the nearest integer of a positive integer in C

1 Answer

0 votes
#include <stdio.h>

int mySqrt(int n) {
    if (n == 0 || n == 1) {
        return n;
    }

    int start = 1;
    int end = n;

    while (start <= end) {
        int mid = start + (end - start) / 2;

        if ((long long)mid * mid > (long long)n) {
            end = mid - 1;
        }
        else if ((long long)mid * mid == (long long)n) {
            return mid;
        } else {
            start = mid + 1;
        }
    }

    return end;
}

int main(int argc, char *argv[]) {
    printf("%d\n", mySqrt(240000)); // 489.897
    
    return 0;
}



  
  
/*
run:
  
489
  
*/

 



answered May 12, 2024 by avibootz

Related questions

...