본문 바로가기
프로그래밍/CodeUp

CodeUp[Q_2635] : 약수의 합 (Large)

by 조원일 2020. 4. 11.
728x90

1. 문제

https://codeup.kr/problem.php?id=2635

 

약수의 합 (Large)

첫 번째 줄에 정수 $N$이 입력된다.($1 <= N <= 1,000,000,000$)

codeup.kr

[출처 : 코드업(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