正整数のゲーデル数化?
Posted feedbacks - JavaScript
#4658の素直な移植。
Dan the Goedel Numberer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | var primes = [2,3];
function fill_primes(nprimes){
function f(n){
for (var p = 0, l = primes.length; p < 0; p++){
if (p*p > n) return;
if (n % d == 0) break;
}
primes[primes.length] = n;
}
for (var n = primes[primes.length-1]+2; primes.length < nprimes; n += 2)
f(n);
}
function goedel_number(n, offset){
if (! offset) offset = 0;
var d = [];
n.toString().replace(/\d/g, function(m){
d[d.length] = parseInt(m);
});
fill_primes(d.length);
var result = 1;
for (var i = 0, l = d.length; i < l ; i++) {
result *= Math.pow(primes[i], d[i]+offset);
}
return result;
}
/*
p(goedel_number(23));
p(goedel_number(230));
p(goedel_number(23,1));
p(goedel_number(230,1));
*/
|




nobsun
#4420()
Rating2/2=1.00
see: ゲーデル数
[ reply ]