2011-09-20 21 views
1
def getPrime(testNumber) 
    temp1=testNumber -1; 
    bIsPrime = false; 
    while (temp1 > 1) do 
     bIsPrime = ((testNumber % temp1) == 0) 
     puts("Check 1 #{((testNumber % temp1) == 0)}, temp1=#{temp1} "); 
     if ($bIsPrime) 
      break; 
     else 
      temp1 = temp1-1; 
     end 
    end 
    return bIsPrime 
end 

puts("Enter any number to know if it's Prime or not"); 

testNumber = gets() 

returnVal = getPrime(Integer(testNumber)); 

puts("Is enternered number Pime? #{return}"); 

私はRubyを使い始めました。まず、素数プログラムを作成しようとしました。予期せぬ返品(ローカルジャンパー)

このことは「予期しない復帰」エラーを起こしています。

助けがあれば助かります。ありがとう。

+2

ようこそ:あなたはすでにあなたの答えを持っているが –

+0

RubyのPrimeライブラリに組み込まれています。 – ErsatzRyan

答えて

0

は、私はそれはあなたがあなたのコード内で使用している同じ考えを次の、ここでこれをドロップすると便利だろうと思いました。あなたが助けてくれた回答をupvoteすることを忘れないでください。あなたの質問に最もよく答える答えを「チェック」してください。
+0

ありがとうdrep :)あなたの答えを探していました..しかし、あなたの答えに他の疑問もあります... 1. "is_prime? ?関数名の後に何か違いがありますか? 2. ##の使用は何ですか?返信いただきありがとうございます:) –

+0

(1)Using?最後に結果に何の影響もないので、ここではこの方法(とbang(!)メソッド)をもっと読むことができます: http://rubylearning.com/satishtalim/writing_own_ruby_methods.html(2)最初の#は通常の文字列なので、チェック#1を表示します。チェック#2。私の返事を選んでいただきありがとうございますが、私の答えは本当に答えではなく、もっとルビーのような方法でコードを書く方法を知るために、AdamやLarryを選んだはずです。あなたがそれを変更することができれば、そうでなければ、次回のために心に留めておいて嬉しいです。 – derp

3

returnが予約されています。変数名やそれ以外の場合は、返す以外には使用できません。

は、私はあなたがこの答えをチェックしないでください

+0

はい。申し訳ありません、私は実際に "$ {!returnVal}"を意味しました –

2

puts("Is entered number prime? #{!returnVal}");を意味信じて、アダムが最初でした。それがある場合 - しかし、ここでアダムが彼の答えで言うように、問題はあなたが

Rubyは#{ foo }構造の内部にあるものは何でも評価が起こっていた何

puts("Is enternered number Pime? #{return}"); 

を言っていることである詳細

です

puts "1 + 1 = #{1+1}" == >> 1 + 1 = 2を印刷します

結果の値は、文字列に変換されます(強制変換されます)。

あなたの場合、rubyにreturnの文を評価するように指示しましたが、これは文脈上意味をなさないものです。したがって、少し奇妙なエラーメッセージです。スタックオーバーフローへ

def is_prime?(test_number) 
    (2..test_number-1).reverse_each do |i| 
     divisible = (test_number % i == 0) 
     puts "Check ##{test_number-i}, divisible=#{divisible}, temp=#{i}" 
     return false if divisible 
    end 
    return true 
end 
puts "Enter any number to know if it's prime or not" 
test_number = gets.chomp.to_i 
puts "Is entered number prime? #{is_prime?(test_number)}" 
関連する問題