я написал следующую функцию, чтобы проверить, является ли число простым:функция рубин возвращает другое логическое значение в IRB против repl.it
def is_prime?(number)
arr = (2..number).to_a.select {|m| number % m == 0}
arr.length == 1 ? true : false
end
При прохождении 4 или 9, как число в IRB, он правильно возвращает ложный. Однако в repl.it они оцениваются как истинные.
Вот код теста, я бегу на repl.it:
puts("\nTests for #is_prime?")
puts("===============================================")
puts('is_prime?(2) == true: ' + (is_prime?(2) == true).to_s)
puts('is_prime?(3) == true: ' + (is_prime?(3) == true).to_s)
puts('is_prime?(4) == false: ' + (is_prime?(4) == false).to_s)
puts('is_prime?(9) == false: ' + (is_prime?(9) == false).to_s)
puts("===============================================")
И его выход:
Tests for #is_prime?
===============================================
is_prime?(2) == true: true
is_prime?(3) == true: true
is_prime?(4) == false: true
is_prime?(9) == false: true
===============================================
What could be causing this variation?
Не могли бы вы «поделиться» своей сессией repl.it? Вот что я вижу. https://repl.it/Ck9M/0 – kcdragon
Вот ссылка на мою сессию repl.it: https://repl.it/Br7y/452 – John
Ваш реплика работает должным образом. Несмотря на то, что 4 и 9 оценивают значение true, это потому, что вы проверяете, что они ложные. false == false is true – kcdragon