2016-05-29 67 views
0

我正在嘗試編寫一個方法,該方法根據被評估的整數是否爲素數來返回true或false。下面的代碼是我基於閱讀維基百科文章,以前的計算器答案等拼湊在一起的東西。目前程序對素數返回true,但不返回false。我想在不使用任何內置函數的情況下執行此操作。我應該如何解決這個問題?確定數字是否在Ruby中爲素數

def prime?(integer) 
(2..integer - 1).each do |x| 
    if (integer % x) == 0 
    return false 
    else 
    return true 
    end 
end 
end 
+0

注意:'''''',''''''和'=='是內置函數。 :P – Amadan

+0

@amadan - 不要迂腐;你知道@天安石指的是像'Prime'這樣的圖書館。 – Pavling

回答

0

你有一個邏輯問題。該程序對任何不能被2整除的數字返回true。因此,在循環完全執行後,只需放入return true語句。

def prime?(integer) 
    return false if integer < 2 
    (2..integer - 1).each do |x| 
     if (integer % x) == 0 
      return false 
     end 
    end 
    true 
end 
+0

它看起來像這個方法仍然沒有返回假,如果它不是素數......我的主要檢查是否也存在邏輯問題? –

+0

它適用於我,你是如何測試它的? –

+0

我認爲它不是不適用於1和0的情況。 –

0

另一種方法是從變量設置爲true開始。

def prime?(integer) 
    (2..integer - 1).each {|x| return false if (integer % x) == 0 } 
    true 
end 
+1

'val'可以設置爲'false',然後返回'true'。如果找到了'2'和'integer-1'之間的一個因子,您只需返回'false'。如果沒有這樣的因素,返回'true'。你不需要變量'val'。 –

+0

謝謝,反饋很受歡迎。 – gonzalo2000

+0

你可以編輯你的答案 –

相關問題