PHP与指数组合

时间:2013-05-27 19:28:58

标签: php factorization

我一直在研究数学问题:找出大数的因素。 我来到了“素数因子化”的方法,在PHP中编码都很顺利。 但话说,我想知道数字196的因素(分别为:1,2,4,7,14,28,49,98,196),我发现这个数字的素数分解是:( 2 ^ 2)(7 ^ 2)。

要找到这些因素,你必须在两者之间进行所有可能的组合,然后将它们变为多种:

(2^0)(7^0) = 1
(2^1)(7^0) = 2
(2^2)(7^0) = 4
(2^0)(7^1) = 7
(2^1)(7^1) = 14
(2^2)(7^1) = 28
(2^0)(7^2) = 49
(2^1)(7^2) = 98
(2^2)(7^2) = 196

这就是我被困住的地方。 我需要找到一个函数来组合这些项目(指数可能不会高于那个数字的主要因子分解)。此函数必须处理N个因子(N是一个数字> 0且小于100)。

我希望你理解我的问题并对如何解决它有一些想法!

1 个答案:

答案 0 :(得分:0)

以下内容将打印$N = '196'的素数因子以及指数数。

<?php
    function is_prime($N) {
        if($N == 2) return true;
        for($i = 3 ; $i * $i <= $N; $i++ ) {
            if($N % $i == 0) return false;
        }
        return true;
    }
    $a = array();
    $N = '196';
    for($i = 2; $i <= $N; $i++) {
        while($N % $i == 0 && is_prime($i)) {
            if(!isset($a[$i])) {
                $a[$i] = 0;
            }
            $a[$i]++;
            $N = $N / $i;
        }
    }
    print_r($a);
?>