#/*********************************************************** # gcd.rb -- 最大公約数 #***********************************************************/ #/* 再帰版 #def gcd( x, y) # # if (y == 0); return x; end # else return gcd(y, x % y) #end #*/ # 非再帰版 def gcd( x, y) while (y != 0) t = x % y; x = y; y = t end return x end # a[0], ..., a[n-1] の数の最大公約数 def ngcd( n, a) d = a[0] for i in 1...n d = gcd(a[i], d) end return d end a = [] while (true) printf("整数を入力してください: ") for i in 0...100 s = gets if (s !~ /\d+$/); break; end a[i] = s.to_i end if (i == 0); break; end printf("最大公約数 = %d\n", ngcd(i, a)) end exit 0