51 lines
633 B
AutoHotkey
51 lines
633 B
AutoHotkey
SetBatchLines, -1
|
|
Msgbox % hamming(1,20)
|
|
Msgbox % hamming(1690)
|
|
return
|
|
|
|
hamming(first,last=0)
|
|
{
|
|
if (first < 1)
|
|
ans=ERROR
|
|
|
|
if (last = 0)
|
|
last := first
|
|
|
|
i:=0, j:=0, k:=0
|
|
|
|
num1 := ceil((last * 20)**(1/3))
|
|
num2 := ceil(num1 * ln(2)/ln(3))
|
|
num3 := ceil(num1 * ln(2)/ln(5))
|
|
|
|
loop
|
|
{
|
|
H := (2**i) * (3**j) * (5**k)
|
|
if (H > 0)
|
|
ans = %H%`n%ans%
|
|
i++
|
|
if (i > num1)
|
|
{
|
|
i=0
|
|
j++
|
|
if (j > num2)
|
|
{
|
|
j=0
|
|
k++
|
|
}
|
|
}
|
|
if (k > num3)
|
|
break
|
|
}
|
|
Sort ans, N
|
|
|
|
Loop, parse, ans, `n, `r
|
|
{
|
|
if (A_index > last)
|
|
break
|
|
if (A_index < first)
|
|
continue
|
|
Output = %Output%`n%A_LoopField%
|
|
}
|
|
|
|
return Output
|
|
}
|