반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
Tags
- spring security 설정
- 백트래킹
- SQL Mapper
- 둘만의 암호
- 입출력
- 혼공얄코
- 자바의정석
- 티스토리챌린지
- 오버라이딩
- CPU
- 멀티태스킹
- 다형성
- 둘만의 암호 자바
- 자바의 정석
- StringBuffer
- hackerrank
- localtime
- 오버로딩
- 프로그래머스
- 멀티프로세싱
- LocalDate
- 캡슐화
- 리눅스
- 오블완
- StringBuilder
- spring security
- 쿠키
- java
- 프로그래머스 둘만의 암호
- over()
Archives
- Today
- Total
쉽게 쉽게
[Java] 약수의 개수 구하기 본문
반응형
▤ 목차
1. 약수의 개수 구하기
1. 방법1
int N = 12345; // 숫자
int cnt = 0; // 약수의 개수
for(int i=1; i<=N; i++){
if(N%i == 0){
cnt++;
}
}
이 방법은 number가 커질수록 비효율적이다.
2. 방법2 (효율적인 방법)
int N = 12345; //숫자
int cnt = 0; //약수의 개수
for (int i = 1; i*i <= N; i++) {
if (i*i == N) cnt++;
else if (N % i == 0) cnt += 2;
}
N의 약수 중 하나가 m이라고 했을 때, 다른 약수는 number/m이 되므로 하나의 약수를 알면 다른 하나를 알수있다.
for문을 √N까지 구하면 약수 절반의 개수를 구할 수 있다는 걸 알 수 있다.
즉 1~√N까지 수 중 N의 약수를 구해 × 2를 해주면 되고, 약수가 √N인 경우에 제곱근이므로 1개로 카운트해주면 된다.

3. 방법3 (제일 효율적인 방법)
int N = 12345; //숫자
int cnt = 0; //약수의 개수
int sqrt = (int) Math.sqrt(N); // 제곱근을 구하기
for(int i = 1; i <= sqrt; i++){
if (i*i == N) cnt++;
else if (N % i == 0) cnt += 2;
}
제곱근을 구해주는 Math.sqrt() 메서드를 활용하면 코드를 더 축약할 수 있다.
[Java] 약수의 개수 구하기
방법1 N의 약수 개수 구하는 방법을 생각했을 때 바로 떠오르는 방법은 N을 1부터 N까지의 숫자로 나눠 약수인지 판별하여 카운트를 해주는 방법이다. 코드로 구현해보면 아래와 같다. int N = 100000
chwan.tistory.com
| 잘못된 내용이 있다면 지적부탁드립니다. 방문해주셔서 감사합니다. |

반응형
'Java > Java' 카테고리의 다른 글
| [Java] 소수 구하기 (2) | 2024.09.26 |
|---|---|
| [Java] 최대공약수, 최소공배수 구하기 (0) | 2024.09.20 |
| [Java] FILE 업로드(다중) (0) | 2024.04.28 |
| Map에 있는 값 형변환하기 (1) | 2023.11.19 |
| 입출력I/O (2) | 2023.03.31 |
