還是數(shù)學題,理一下質因數(shù)的概念,什么是質因數(shù)?即:每個合數(shù)都可以寫成幾個質數(shù)相乘的形式,其中每個質數(shù)都是這個合數(shù)的因數(shù)。首先要確定一個數(shù)是不是質數(shù),用筆不好計算。借助于計算機不難實現(xiàn),以下使用php來分解質因數(shù)。
[code lang=”php”]
//判斷一個數(shù)是否質數(shù)
function isPrimer($n)
{
if ($n < 2) {
return false;
}
$flag = true;
$sqrt = floor(sqrt($n));
for ($i = 2; $i <= $sqrt; $i++) {
if ($n % $i === 0) {
$flag = false;
break;
}
}
return $flag;
}
//求合數(shù)的質因數(shù)
function getPrimeFactorization($num)
{
if (isPrimer($num)) {
//不是合數(shù),直接pass并返回false
return false;
}
static $primeFactor = array();
for ($i = 2; $i < $num; $i++) {
if ($num % $i === 0) {
$m = $num / $i;
if (isPrimer($i)) {
$primeFactor[] = $i;
if (isPrimer($m)) {
$primeFactor[] = $m;
break;
} else {
getPrimeFactorization($m);
}
break;
}
}
}
return $primeFactor;
}
//調用求解
var_dump(getPrimeFactorization(100));
[/code]
得到結果:
[code lang=”bash”]
array(4) {
[0]=>
int(2)
[1]=>
int(2)
[2]=>
int(5)
[3]=>
int(5)
}
[/code]
即:100分解質因數(shù)為:2x2x5x5,質因數(shù)是:2和5