【问题标题】:Prime Factorization Program PHP素数分解程序 PHP
【发布时间】:2013-11-06 17:01:39
【问题描述】:

所以我目前正在尝试编写一个可以找到任何数字的素数分解的程序。我已经成功地做到了这一点,我只是正忙于让它得到正确的表现。例如,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的数组)

【问题讨论】:

  • $f 将因子存储为键并将其计数作为值不是更容易吗?

标签: php arrays factorization


【解决方案1】:

您不需要外部循环 - array_count_values 返回(来自 manual page)“使用数组的值作为键并将它们在数组中的频率作为值的数组。”

所以你只需要这样做:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-28
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多