正整数のゲーデル数化?
Posted feedbacks - D
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import std.conv;
import std.math;
import std.string;
uint goedel(uint n) {
static int[] primes = [ 2, 3 , 5, 7, 11, 13, 17, 19, 23, 29 ];
real rslt = 1;
string str = toString(n);
for (int i = 0; i < str.length; ++i) {
rslt *= pow(cast(real)(primes[i]), toUint([str[i]]));
}
return cast(uint)(rslt);
}
/*
import std.stdio;
void main() {
writefln("%d, %d, %d", 9, 512, goedel(9));
writefln("%d, %d, %d", 81, 768, goedel(81));
writefln("%d, %d, %d", 230, 108, goedel(230));
}
*/
|



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