素因数分解を行うプログラム サンプルコード JS/PHP
2018-12-249 min read
目次
概要
ある任意の正の整数の素因数を配列で返すサンプルコードを紹介します。
サンプルコード
JavaScript
パターン1 : 純粋な素因数分解
function pf(n) {
var result = [];
if (n === 1) {
return [1];
}
var init = 2;
while (n !== 1) {
var i = init;
while (i < Number.MAX_SAFE_INTEGER) {
if (n % i == 0) {
result.push(i);
n /= i;
break;
}
i++;
}
init = i;
}
return result;
}
デバッグ
console.log(JSON.stringify(pf(1)));
console.log(JSON.stringify(pf(4)));
console.log(JSON.stringify(pf(27)));
console.log(JSON.stringify(pf(972439611840)));
// [1]
// [2,2]
// [3,3,3]
// [2,2,2,2,2,2,3,3,3,5,103,103,103,103]
パターン2 : 指数部と仮数部に分ける
function pf(n) {
var result = {};
if (n === 1) {
return { '1': 1 };
}
var init = 2;
while (n !== 1) {
var i = init;
while (i < Number.MAX_SAFE_INTEGER) {
if (n % i === 0) {
n /= i;
if (!(result[i] > 0)) {
result[i] = 0;
}
result[i]++;
break;
}
i++;
}
init = i;
}
return result;
}
デバッグ
console.log(JSON.stringify(pf(1)));
console.log(JSON.stringify(pf(4)));
console.log(JSON.stringify(pf(27)));
console.log(JSON.stringify(pf(972439611840)));
// {"1":1}
// {"2":2}
// {"3":3}
// {"2":6,"3":3,"5":1,"103":4}
PHP
function pf($n) {
$result = array();
if ($n === 1) {
return [1];
}
$init = 2;
while ( $n !== 1 ) {
$i = $init;
while ($i < 0xFFFFFF) {
if ($n % $i == 0) {
$result[] = $i;
$n /= $i;
break;
}
$i++;
}
$init = $i;
}
return $result;
}
Recommends
New Posts
Hot posts!
Date
Tags
(110)
(54)
(54)
(47)
(45)
(36)
(30)
(29)
(24)
(24)
(22)
(21)
(21)
(20)
(19)
(17)
(16)
(16)
(15)
(14)
(12)
(12)
(12)
(12)
(12)
(12)
(11)
(10)
(10)
(10)
(10)
(10)
(9)
(9)
(8)
(8)
(8)
(8)
(7)
(7)
(6)
(6)
(6)
(6)
(6)
(5)
(5)
(5)
(5)
(4)
Author