Skip to content

Commit

Permalink
added more examples
Browse files Browse the repository at this point in the history
  • Loading branch information
akitson-fu committed Aug 2, 2014
1 parent a5adbd5 commit 2c2ba4b
Showing 1 changed file with 60 additions and 53 deletions.
113 changes: 60 additions & 53 deletions examples/squareRootByPrimeFactoring.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,61 +15,68 @@

use chippyash\Type\Number\IntType;

$n = new IntType(16449741);
echo "n = {$n}\n";

//find the prime factors
$pFactors = $n->primeFactors();
echo "= ";
$line = "√(";
foreach ($pFactors as $prime => $exponent) {
for ($e=0; $e<$exponent; $e++) {
$line .= "{$prime} x ";
}
$nn = [];
for ($x=1; $x<101; $x++) {
$nn[] = $x;
}
$line = rtrim($line, 'x ');
echo "{$line})\n";
$nn[] = 16449741; //just a big number
foreach ($nn as $ni) {
$n = new IntType($ni);
echo "n = {$n}\n";

//reduce
$left = [];
$right = [];
foreach ($pFactors as $prime => $exponent) {
do {
if ($exponent > 1) {
$left[] = $prime;
$exponent -=2;
//find the prime factors
$pFactors = $n->primeFactors();
echo "= ";
$line = "√(";
foreach ($pFactors as $prime => $exponent) {
for ($e=0; $e<$exponent; $e++) {
$line .= "{$prime} x ";
}
} while ($exponent > 1);
if ($exponent == 1) {
$right[] = $prime;
}
}
$line = "= ";
foreach ($left as $prime) {
$line .= "{$prime} x ";
}
$line = rtrim($line, 'x ') . "√(";
foreach ($right as $prime) {
$line .= "{$prime} x ";
}
$line = rtrim($line, 'x ');
echo "{$line})\n";
$line = rtrim($line, 'x ');
echo "{$line})\n";

//final
$lterm = 1;
foreach ($left as $prime) {
$lterm *= $prime;
}
$rterm = 1;
foreach ($right as $prime) {
$rterm *= $prime;
}
$ssign = '√';
if ($lterm == 1) {
$lterm = '';
}
if ($rterm == 1) {
$rterm = '';
$ssign = '';
}
echo "= {$lterm}{$ssign}{$rterm}\n";
//reduce
$left = [];
$right = [];
foreach ($pFactors as $prime => $exponent) {
do {
if ($exponent > 1) {
$left[] = $prime;
$exponent -=2;
}
} while ($exponent > 1);
if ($exponent == 1) {
$right[] = $prime;
}
}
$line = "= ";
foreach ($left as $prime) {
$line .= "{$prime} x ";
}
$line = rtrim($line, 'x ') . "√(";
foreach ($right as $prime) {
$line .= "{$prime} x ";
}
$line = rtrim($line, 'x ');
echo "{$line})\n";

//final
$lterm = 1;
foreach ($left as $prime) {
$lterm *= $prime;
}
$rterm = 1;
foreach ($right as $prime) {
$rterm *= $prime;
}
$ssign = '√';
if ($lterm == 1) {
$lterm = '';
}
if ($rterm == 1) {
$rterm = '';
$ssign = '';
}
echo "= {$lterm}{$ssign}{$rterm}\n\n";
}

0 comments on commit 2c2ba4b

Please sign in to comment.