숫자가 소수인지 확인 - Ruby
7139 단어 algorithmsrubyprimejavascript
환영하다
오늘의 좋은 시간, 친애하는 친구, 코더 및 애호가.
나는 오랫동안 글을 올리지 않았고 주로 나 자신을 개선하고 몇 가지 부수적인 프로젝트를 진행했습니다. 그러나 내가 배우고 행한 것을 나누고자 하는 의지는 여전히 내 안에 뜨겁게 타오르고 있다.
알고리즘에 대한 몇 가지 작은 기사를 공유하기로 결정했고 작은 것부터 시작하기로 결정했습니다.
오늘은 제공된 숫자가 소수인지 확인하는 알고리즘을 살펴보겠습니다.
소수란 무엇입니까?
코드를 작성하기 전에 정확히 소수가 무엇인지 이해해 봅시다. 소수는 자신 또는 1로만 나누어지는 수입니다. 따라서 소수의 속성을 충족할 수 있는 코드를 설계할 것입니다.
즉, 숫자가 2보다 작으면 즉시 'false'를 반환할 수 있습니다.
재현 단계
암호
즉각적인 해결책을 원한다면 'prime?'을 사용할 수 있습니다. Ruby에서 제공하는 메서드입니다.
# Pre-defined class
require 'prime'
# Initializing the numbers
num1 = 17
num2 = 90
num3 = 29
# Printing if prime or not
puts num1.prime? # true
puts num2.prime? # false
puts num3.prime? # true
Ruby는 지정된 범위의 모든 소수를 나열하는 방법도 제공합니다.
require 'prime'
Prime.each(27) do |prime|
p prime
end
#=> 2, 3, 5, 7, 11, 13, 17, 19, 23
루비 솔루션 - 1
다음은 Ruby를 사용하여 숫자가 소수인지 확인하는 실제 솔루션입니다. 물론 입력된 숫자가 양수라고 가정합니다.
def is_prime(num)
return false if (num < 2)
(2..(num - 1)).each do |n|
return false if num % n == 0
end
true
end
루비 솔루션 - 2
그리고 더 짧게 원하는 경우 하나의 라이너로 결과를 더 빨리 반환하는 것이 있습니다. [2...n-1] 범위의 모든 숫자를 검사하지 않기 때문에 [2...sqrt(n)] 사이의 숫자만 검사합니다.
제곱근보다 큰 수의 약수가 없는 것으로 간주됩니다. 따라서 우리는 'n'의 제곱근까지만 숫자를 확인합니다.
def is_prime?(num)
return false if num < 2
Math.sqrt(num)
.to_i
.downto(2)
.each {|i| return false if num % i == 0}
true
위에 제공된 솔루션은 가장 최적의 솔루션 중 하나입니다. 그렇지 않으면 제공된 숫자의 절반까지인 [2...n/2] 사이의 숫자를 확인할 수도 있습니다. 그러나 물론 제곱근은 우리에게 더 적은 숫자를 제공합니다.
Javascript 솔루션 - 하나의 라이너
여기에서 'Ruby solution - 2'에서 제공하는 것과 거의 동일한 솔루션을 Javascript로 볼 수 있습니다.
const isPrime = num => (num > 1) && Array(Math.floor(Math.sqrt(num)) - 1).fill(0).map((_, i) => i + 2).every(i => num % i !== 0);
이 솔루션은 [2...sqrt(n)] 사이의 숫자가 'n'으로 나누어지지 않는지 여부를 확인합니다. 해당 영역에서 약수를 찾으면 false를 반환합니다.
결론
자, 이게 다야, 얘들아. 이 게시물에서 유용한 통찰력을 얻거나 적어도 Ruby 및 Javascript에서 아름다운 한 줄짜리 코드 스니펫을 보게 되어 기뻤기를 바랍니다.
일반적인 간단한 알고리즘에 대한 다른 유용한 솔루션을 계속 게시하려고 노력할 것이므로 Dev.to 및 모든 개발자 커뮤니티와 함께 계속 개선하십시오.
안전하고 행운을 빕니다!!!
Reference
이 문제에 관하여(숫자가 소수인지 확인 - Ruby), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/eminarium/check-whether-a-number-is-prime-ruby-4dc7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)