# Visual C++ - Square Root of a Given Number

You can solve the problem in two ways with out using the library function sqrt(...) defined in math.h header file.

Method 1 - Like binary search, have a minimum and maximum possible values. Do the square operation and compare the result. Then adjust minimum or maximum until we find the correct sqrt of the given number. NOTE: This is NOT a perfect square root and it has got accuracy of 4 decimal points. Method 1 is explained on this page.

Method 2 - The traditional way of doing with out calculator or any assumption is using the algorithm. It will be perfect square root up to N number of decimal points meaning the limitation of float and double.Click here to go to algorihmic source code for finding square root.

## Source Code

#include <stdio.h>

#include <iostream>

#include <tchar.h>

#include <math.h>

double SQRTByGuess(double num)

{

// Assume that the number is less than 1,000,000. so that the maximum of SQRT would be 1000.

// Lets assume the result is 1000. If you want you can increase this limit

if(num < 0)

{

std::cout << "Negative numbers are not allowed";

return -1;

}

else if(num == 0)

return 0;

double min = 0, max = 1000;

double test = 0;

while(1)

{

test = (min + max) / 2;

{

// min needs be moved

min = test;

}

{

// max needs be moved

max = test;

}

break;

if(num > (answer - 0.0001) &&

break;

}

return test;

}

int _tmain(int argc, _TCHAR* argv[])

{

for(int i = 1; i <= 100; i += 3)

{

double t = SQRTByGuess(i);

char buf[128];

sprintf(buf, "\nSQRT(%d) = %.4lf, %.4lf", i, t, sqrt((double)i));

std::cout << buf;

}

return 0;

}

## Output

SQRT(1) = 1.0000, 1.0000

SQRT(4) = 2.0000, 2.0000

SQRT(7) = 2.6458, 2.6458

SQRT(10) = 3.1623, 3.1623

SQRT(13) = 3.6055, 3.6056

SQRT(16) = 4.0000, 4.0000

SQRT(19) = 4.3589, 4.3589

SQRT(22) = 4.6904, 4.6904

SQRT(25) = 5.0000, 5.0000

SQRT(28) = 5.2915, 5.2915

SQRT(31) = 5.5678, 5.5678

SQRT(34) = 5.8309, 5.8310

SQRT(37) = 6.0828, 6.0828

SQRT(40) = 6.3246, 6.3246

SQRT(43) = 6.5574, 6.5574

SQRT(46) = 6.7823, 6.7823

SQRT(49) = 7.0000, 7.0000

SQRT(52) = 7.2111, 7.2111

SQRT(55) = 7.4162, 7.4162

SQRT(58) = 7.6158, 7.6158

SQRT(61) = 7.8102, 7.8102

SQRT(64) = 8.0000, 8.0000

SQRT(67) = 8.1854, 8.1854

SQRT(70) = 8.3666, 8.3666

SQRT(73) = 8.5440, 8.5440

SQRT(76) = 8.7178, 8.7178

SQRT(79) = 8.8882, 8.8882

SQRT(82) = 9.0554, 9.0554

SQRT(85) = 9.2195, 9.2195

SQRT(88) = 9.3808, 9.3808

SQRT(91) = 9.5394, 9.5394

SQRT(94) = 9.6954, 9.6954

SQRT(97) = 9.8489, 9.8489

SQRT(100) = 10.0000, 10.0000