# -*- coding: euc-jp -*- require 'prime' def prime_array(k) q = Prime::Generator23.new primes = Array.new q.each{|x| if primes.length < k primes << x else break end } primes end n = 10 ** 7 # 素数の個数 x = srand() prime = prime_array(n) x = rand(n) y = rand(n) while true if y != x break else y = rand(n) end end a = prime[x] b = prime[y] pp = a * b printf("prime = %d\n", pp) printf("(a, b) = (%d, %d)\n", a, b) t0 = Time.now.to_f for n in prime if pp % n == 0 printf("%d, %d\n", n, pp / n) break end end t1 = Time.now.to_f printf("かかった時間: %f [s]\n", t1 - t0)