改良案の一つは 2 で割り切れなくなるまで x を 2 で割り続ければいいので、 for ループの中は while x mod a == 0 ? a x = x / a f = f + 1 wend だけでいいかな。