Hamming Numbers

http://golf.shinh.org/p.rb?Hamming+Numbers#Ada
Boostさんに追いつけねー。
私のコードは↓な感じ。ローカル変数iが0になることを期待してるあたりがダメダメ、でも通る。

with text_io;use text_io;procedure a is
package p is new integer_io(integer);i,n,x,y:integer;begin
p.get(n);while n>0 loop
i:=i+1;x:=i;y:=2;while
y<6 loop while x rem y=0 loop x:=x/y;end loop;y:=y*2-1;end loop;if x=1 then
p.put(i,1);new_line;n:=n-1;end
if;end loop;end;

Boostさんの他の問題のサイズからして、たぶん凝ったことはしてないと思うんだよなー。ということは純粋にもっと短く書けるアルゴリズムがあるのか……orz
あと実にどうでもいいけど、http://golf.shinh.org/p.rb?Square+rootの、↓は、言語差別と思う。

printf "%.9f" format.

これがありなら、PRINT USINGでできてprintfでできないようなフォーマットを指示して、BASICを優位に立たせるのもありなわけで……。
まあそれいったらBASICのSTR$やAdaの'Imgは、正の数で前に符号分のスペースが入って、全体的に苦笑いするしか無いんですけどね。Hamming Numbersも、各行の前に空白入れていいなら、Integer_IO使わなくてよくなってかなり短くなります。