2013-10-08 4 views
0

Я пытаюсь выяснить, входит ли пользователь в простое число. Я хочу, чтобы напечатать «PRIME» или «НЕ ПРЕМЬЕР» на экран:ruby ​​не будет выводить вывод

prime = "" 
puts "TYPE IN A NUMBER TO SEE IF IT'S PRIME: " 
gets.chomp(prime).to_i 
for divide_by in 2..(prime.to_i - 1) 
    if prime % divide_by == 0 
     puts "NOT PRIME!!!" 
else 
    puts "PRIME!!!" 
end 
end 

Должен ли я использовать while петлю вместо этого?

ответ

0

Ваш gets.chomp(prime).to_i не делает ничего значимого. Я не понимаю цели chomp здесь, и она не назначает какую-либо переменную. Если вы хотите получить номер ввода как prime, вам необходимо сделать prime = gets.to_i.

Как только вы это сделаете, вам не нужно делать to_i снова, как в for divide_by in 2..(prime.to_i - 1).

Кроме того, ваша логика ошибочна. Если prime не делится на 2, достаточно ли сказать "PRIME!!"? Я так не думаю.

И если вам интересно, какой тип цикла использовать, цикл for редко бывает полезен. Вы должны использовать each.

+0

Да, но как мне тогда что-то сделать с номером? Я помещаю его в один цикл? –

+0

Поместите то, что в том же цикле, что и что? – sawa

+0

«Если prime не делится на 2, достаточно ли сказать« PRIME !! »?» Я знаю. Я пытался сказать любое число между 1 и простым, не считая 1. Я постараюсь сделать это с помощью для каждого цикла. –

Смежные вопросы