[プログラマー]約数の個数と加算
質問する
https://programmers.co.kr/learn/courses/30/lessons/77884
に答える
2つの数の間の数字(2つの数を含む)の約数の個数を求めて、条件によって加算と減算を行います.
コード#コード#
public int solution(int left, int right) {
int answer = 0;
for (int i = left; i <= right; i++) {
int divisor = divisor(i);
if (divisor % 2 == 0) {
answer += i;
} else {
answer -= i;
}
}
return answer;
}
// 약수 구하는 함수
private int divisor(int N) {
/**
* N의 약수 중 하나가 m이라고 했을 때 다른 약수는 N/m이다.
* 따라서 루트 N까지 구하면 약수 절반의 개수를 알 수 있다.
* 절반의 개수를 구하고 거기에 2를 곱해주자.
* 루트 N이 i와 같으면 제곱근 이므로 1개로 카운트 하자.
* 제곱근: 제곱해서 나온 값이 N과 같은 경우
*/
int count = 0;
for (int i = 1; i * i <= N; i++) {
if (i * i == N) count++;
else if (N % i == 0) count += 2;
}
return count;
}
Reference
この問題について([プログラマー]約数の個数と加算), 我々は、より多くの情報をここで見つけました https://velog.io/@hwangduli515/프로그래머스-약수의-개수와-덧셈テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol