include "../vendor/autoload.php"; use Chippyash\Type\Number\IntType; //PHP 5.3 //$nn = []; //for ($x=1; $x<101; $x++) { // $nn[] = $x; //} //PHP 5.4+ $nn = range(1, 100); $nn[] = 16449741; //just a big number foreach ($nn as $ni) { $n = new IntType($ni); 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 "; } } $line = rtrim($line, 'x '); echo "{$line})\n"; //reduce $left = []; $right = []; foreach ($pFactors as $prime => $exponent) { do { if ($exponent > 1) {
/** * @dataProvider factors */ public function testPrimeFactorsReturnsAnArrayOfFactorsOfTheNumber($n, array $ignore, array $pFactors) { $i = new IntType($n); //unwrap the factors - phpUnit does not pass keys in! $pf = array(); foreach ($pFactors as $factor) { $k = key($factor); $pf[$k] = $factor[$k]; } $this->assertEquals($pf, $i->primeFactors()); }