Ruby - определить, является ли число простым числом - PullRequest
15 голосов
/ 29 августа 2010

Я работаю над проблемами на Project Euler , чтобы научиться программировать на Ruby. Я знаю, что для этого есть встроенная функция , но я избегаю встроенных функций, которые помогают мне учиться.

Поэтому мне нужно написать метод, чтобы определить,число простое.Первый метод работает, а второй нет.Кто-нибудь может объяснить, почему?

 def is_prime n
  for d in 2..(n - 1)
   if (n % d) == 0
    return false
   end
  end

  true
 end

 def is_prime2 n
  foundDivider = false
   for d in 2..(n - 1)
    foundDivider = ((n % d) == 0) or foundDivider
   end
  not foundDivider
 end

Ответы [ 13 ]

0 голосов
/ 26 июня 2018

** ДЛЯ ПРОСТОГО КОРОТКОГО МЕТОДА ** ПЕРВЫЙ УСТАНОВЛЕННЫЙ ПРАЙМ-ДРАГОЦЕННЫЙ КАМЕНЬ

require 'prime'
`p prime.first(20)`

Теперь сохраните этот файл под желаемым именем, это автоматически сгенерирует первые 20 простых чисел !! : -)

0 голосов
/ 07 апреля 2017

Я попробовал это, и это сработало:

def prime?(n)
  return false if n < 2 
  return true if n == 3 || n == 2 
    if (2...n-1).any?{|i| n % i == 0}
      false
    else
      true
    end
end
0 голосов
/ 05 января 2017

Это немного не по теме в соответствии с деталями, но правильно для заголовка: используя интеграцию bash в ruby, вы можете сделать:

def is_prime n
    `factor #{n}`.split.count < 3
end

bash factor функция возвращает число плюс все его факторы, поэтому, если число простое, будет считаться два слова.

Это полезно только для кода гольфа .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...