728x90
1. 문제
https://codeup.kr/problem.php?id=2635
[출처 : 코드업(https://codeup.kr/)]
이번에는 정수 n의 약수의 합을 구하는 문제입니다.
1부터 n까지 모두 나누어지는지 확인하기보다는
1부터 sqrt(n)까지 확인하는 것이 시간을 단축할수 있습니다.
2. 풀이방법
STEP 1. 1부터 sqrt(n)까지 n으로 나누워지는지 확인
3. 해답
#include <stdio.h>
#include <math.h>
int main() {
int n;
unsigned int sum = 0;
scanf("%d", &n);
for (int i = 1; i <= (int)sqrt(n); i++) {
if (n % i == 0) {
// n이 i로 나누어 지면
if ((n / i) == i) sum += i; // i*i=n일떄
else sum += (i + (n / i));
}
}
printf("%u", sum);
return 0;
}
'프로그래밍 > CodeUp' 카테고리의 다른 글
CodeUp[Q_2704] : 30진수 정렬 (0) | 2020.04.18 |
---|---|
CodeUp[Q_2640] : n의 k승 구하기 2 (0) | 2020.04.17 |
CodeUp[Q_2633] : Lower Bound (0) | 2020.04.10 |
CodeUp[Q_2631] : 보물 찾기 (0) | 2020.04.09 |
CodeUp[Q_2629] : 광역시 (0) | 2020.04.08 |