我只是在學習 Ruby :) 并且我試圖創建一個簡單的素數程式,其中一個數字的所有素數都被列印出來。
我在質數和非質數混合時遇到錯誤 (即:輸入 9 將使您得到所有??非質數)。
對于這樣一個初學者的問題,我很抱歉-我很掙扎,需要一些幫助:)
puts "Enter a number please "
num = gets.chomp.to_i
i = 2
number = 2
while i < num
if number % i == 0
prime = false
end
i = 1
end
if prime == true
puts "#{number} is prime"
else
puts "#{number} is not prime"
end
number = 1
end
uj5u.com熱心網友回復:
while i < num
if number % i == 0
prime = false
end
i = 1
end
# ...
看起來 firstend是一個else.
當您簡化代碼時,更容易捕捉到這些東西,例如,這種方法可以簡化為這個(盡管它還有其他問題):
i = 2
number = 2
while i < num
(number % i).zero? ? prime = false : i = 1
puts "#{number} is #{'not ' unless prime}prime"
number = 1
end
uj5u.com熱心網友回復:
結束錯誤是因為其他
while i < num
if number % i == 0
prime = false
else
i = 1
end
如果你有一個簡短的 If - 更整潔的寫法如下:
if-condition ? 1 : 0
在你的情況下 while is.. 不是最好的選擇 - 你應該使用 range
(1...3).map{|x| puts(x) }
{} - 允許多行(帶有 do end end)
這列印 [1,2]
(1..3).map{|x| x*2 }
將是 [2,4,9]
這應該足以說明如何在不破壞流程的情況下使用代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/444671.html
上一篇:用戶輸入用作函式c 中的引數
