이 코드는 500 개의 제수가있는 첫 번째 소수를 찾습니다. 내가 그것을 실행하면 작동하지만, 나는 "Prime :: new는 쓸데없는 것입니다. 프라임 :: 인스턴스 또는 클래스 프라임 메서드를 사용하십시오."Prime.new는 더 이상 사용되지 않습니다 -이 코드를 다시 작성하는 방법?
나는 이것이 'Prime.new'를 'Prime.instance'로 대체 할 수 있다고 생각했지만, 그렇게 할 때 '다음은 정의되지 않은 방법'이라고합니다. 프라임은 열거 자이어야하므로이 오류가 발생하는 이유는 무엇입니까? 이 정답은 76576500.
require 'mathn'
primer = Prime.new
primes = [ primer.next ]
seed = 500
n = (seed * (seed + 1))/2
i = seed + 1
def count_prime_factors primer, primes, n
total = 1
max = Math.sqrt(n).to_i
while primes.last < max
primes << primer.next
end
primes.each do |i|
count = 0
while n % i == 0
n = n/i
count += 1
end
if count > 0
total *= count + 1
end
end
total
end
while(count_prime_factors(primer, primes, n) < seed)
n += i
i += 1
end
puts n