30 lines
447 B
Text
30 lines
447 B
Text
cat hamming_numbers.bc
|
|
define min(x,y) {
|
|
if (x < y) {
|
|
return x
|
|
} else {
|
|
return y
|
|
}
|
|
}
|
|
define hamming(limit) {
|
|
i = 0
|
|
j = 0
|
|
k = 0
|
|
h[0] = 1
|
|
x2 = 2
|
|
x3 = 3
|
|
x5 = 5
|
|
for (n=1; n<=limit; n++) {
|
|
h[n] = min(x2,min(x3,x5))
|
|
if (h[n] == x2) { x2 = 2 * h[++i] }
|
|
if (h[n] == x3) { x3 = 3 * h[++j] }
|
|
if (h[n] == x5) { x5 = 5 * h[++k] }
|
|
}
|
|
return (h[limit-1])
|
|
}
|
|
for (lab=1; lab<=20; lab++) {
|
|
hamming(lab)
|
|
}
|
|
hamming(1691)
|
|
hamming(1000000)
|
|
quit
|