我一直在研究数学问题:找出大数的因素。 我来到了“素数因子化”的方法,在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)。
我希望你理解我的问题并对如何解决它有一些想法!
答案 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);
?>