Daffodil International University
IT Help Desk => Programming Language => Programming Competition => Topic started by: msu_math on November 21, 2012, 06:37:27 PM
-
The function SquareRoot( $number ) returns square root of integer up to 4 decimal places.
function SquareRoot( $number )
{
$number = $number."00000000";
$number_length = strlen($number);
if($number_length % 2 == 0)
{
$dividant = $number[0].$number[1];
for($i=2;$i<$number_length;$i++)
{
$number[$i-2] = $number[$i];
}
$number[$number_length-1] = NULL;
$number[$number_length-2] = NULL;
$number_length = $number_length-2;
}
else
{
$dividant = $number[0];
for($i=1;$i<$number_length;$i++)
{
$number[$i-1] = $number[$i];
}
$number[$number_length-1] = NULL;
$number_length = $number_length-1;
}
$root = 0;
while($dividant != 0)
{
$multiplier = 0;
$product = 0;
while($product <= $dividant)
{
$divisor = $root*2;
$multiplier = $multiplier+1;
$divisor = $divisor*10+$multiplier;
$product = $divisor*$multiplier;
}
$multiplier = $multiplier-1;
$divisor = $root*20+$multiplier;
$root = $root*10+$multiplier;
$square_root = $square_root.$multiplier;
if($number_length==8)
{
$square_root = $square_root.".";
}
$product = $divisor*$multiplier;
$dividant = $dividant-$product;
if($number_length <= 0)
{
break;
}
$dividant = $dividant.$number[0].$number[1];
for($i=2;$i<$number_length;$i++)
{
$number[$i-2] = $number[$i];
}
$number[$number_length-1] = NULL;
$number[$number_length-2] = NULL;
$number_length = $number_length-2;
}
return $square_root;
}
-
Thanks. You may include sample input and sample output images for more clear Illustration for the students.
-
Sample Return value of SquareRoot():
Call: SquareRoot( 562 ); Return value: 23.7065
Steps in Division Method:
---------------------------------------------------------------------------------------
1. Dividant = 5, Divisor = 2, Square Root = 2
---------------------------------------------------------------------------------------
2. Dividant = 162, Divisor = 43, Square Root = 23
---------------------------------------------------------------------------------------
3. Dividant = 3300, Divisor = 467, Square Root = 23.7
---------------------------------------------------------------------------------------
4. Dividant = 3100, Divisor = 4740, Square Root = 23.70
---------------------------------------------------------------------------------------
5. Dividant = 310000, Divisor = 47406, Square Root = 23.706
---------------------------------------------------------------------------------------
6. Dividant = 2556400, Divisor = 474125, Square Root = 23.7065
---------------------------------------------------------------------------------------