일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- DP
- 다이나믹 프로그래밍
- vscode
- TypeScript
- Redux
- react
- Data Structure
- DFS
- java
- frontend
- 자바
- db
- 안드로이드
- LeetCode
- network
- Database
- CS
- VIM
- 그레이들
- Javascript
- Algorithm
- Python
- BFS
- Graph
- 동적 계획법
- 알고리즘
- git
- 백준
- 리트코드
- 프로그래머스
Archives
- Today
- Total
늘 겸손하게
Algorithm - 소수 판단 본문
주어진 숫자 n이 소수인지 판단하는 함수를 만들어보자.
방법 1
단순하게 숫자 2부터 n - 1 까지 모든 숫자를 하나씩 나누어봤을때 나누어 떨어지면 소수가 아니라고 판단하는 방법이 있다.
이 방법은 단순하고 직관적이나 효율적이지 못하다. 왜냐하면, 2를 제외한 짝수는 모두 소수가 아니고, 모든 수는 제곱근의 제곱으로 나타낼 수 있기 때문에 n - 1까지 모두 나누어 볼 필요없이 n 제곱근 이하의 숫자만으로도 소수 판별이 가능하기 때문이다.
방법 2
숫자 2부터 n - 1의 제곱근까지 수 중, 홀수 숫자만으로 나누어서 소수 판별.
자바
public boolean isPrime(long number) {
if (number == 1)
return false;
if (number == 2 || number == 3)
return true;
if (number % 2 == 0) return false;
for (int div = 3 ; div <= Math.sqrt(number) ; div += 2) {
if (number % div == 0) return false;
}
return true;
}
자바스크립트
const isPrime = number => {
if (number == 1)
return false;
if (number == 2 || number == 3)
return true;
for (let i = 3 ; i <= Math.sqrt(number) ; i += 2) {
if (number % i == 0) return false;
}
return true;
}
'Algorithm' 카테고리의 다른 글
Algorithm - 버블 정렬 (0) | 2023.07.21 |
---|---|
Algorithm - 플로이드 워셜 알고리즘 (0) | 2023.07.16 |
Algorithm - 순열, 조합, 중복순열, 중복조합 (Java) (0) | 2023.07.11 |
LCS 알고리즘 (0) | 2023.05.14 |
수학식 후위 표기식으로 변경 (차량기지 알고리즘) (0) | 2023.04.10 |