Я делаю программу в рубине, чтобы найти все основные факторы заданного числа. Я знаю, что Ruby имеет класс .Prime, но я бы хотел сделать это, не используя его.Использование modulo в диапазоне чисел в Ruby
Все работает хорошо, за исключением одного улова: я не могу найти способ запускать modulo в диапазоне чисел. Я попытался найти ответ в Интернете, в документации Ruby и более старых сообщениях здесь. До сих пор я ничего не нашел, что помогло.
Вот код:
def prime(n)
r = Range.new(2, n-1)
r.each { |x| puts x if n % x == 0 && x % (2..x-1) != 0}
end
print "Please enter a number: "
prime(gets.chomp.to_i)
EDIT: К сожалению, я, возможно, был расплывчатым. Этот бит кода:
x % (2..x-1) != 0
Kicks обратно это:
euler2.rb:3:in `%': Enumerator can't be coerced into Fixnum (TypeError)
from euler2.rb:3:in `block in divisible'
from euler2.rb:3:in `each'
from euler2.rb:3:in `divisible'
from euler2.rb:7:in `<main>'
Я гугле эту ошибку, но не повезло. Если я изменю код на не-диапазон, он будет работать.
«Запустите modulo на ряд чисел», что вы имеете в виду? Кажется, вы уже это делаете. Каков ожидаемый результат? – jcm
Думаю, я понял это сейчас. – jcm
Просто подсказка, вам нужно только проверить sqrt (n), а не n. – Lesleh