Prime分解程序PHP

时间:2013-11-06 17:01:39

标签: php arrays factorization

所以我目前正在尝试编写一个能够找到任何数字的素数分解的程序。我已经成功地做到了这一点,我只是被它抓住了正确的代表。例如,82944的素因子化是(2 ^ 10)*(3 ^ 4)。

我的程序成功地找到了素数分解......只是一种混乱的方式。我接近用以下方法正确表示它:

$unique_factors = array_unique($f);
foreach($unique_factors as $factors){
    foreach(array_count_values($f) as $count){
        echo $factors . "<sup>" . $count . "</sup>";
    }
}

然而,这输出(2 ^ 10)(2 ^ 4)(3 ^ 10)(3 ^ 4)

(数组$ f是包含2,2,2,2,2,2,2,2,2,2,3,3,3,3的数组)

1 个答案:

答案 0 :(得分:4)

你不需要外循环 - array_count_values返回(来自manual page)“一个数组,使用数组的值作为键,将数组中的频率作为值。”

所以你只需要这样做:

foreach(array_count_values($f) as $key=>$count){
    echo "$key<sup>$count</sup>";
}