본문 바로가기
문제 해결/BaekJoon

[백준] [C++] 2501번 약수 구하기

by WSLim_97 2022. 12. 29.
반응형

https://www.acmicpc.net/problem/2501

 

2501번: 약수 구하기

첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다.

www.acmicpc.net


코드

#include <iostream>
using namespace std;

int main()
{
	int n, k, i, count = 0;
	cin >> n >> k;

	for (i = 1; i <= n; i++)
	{
		if (n % i == 0)
		{
			count++;
		}
		if (count == k)
		{
			break;
		}
	}
	if (k > count)
		cout << "0" << endl;
	else
		cout << i << endl;

	return 0;
}

풀이

정수 n을 입력받아 n의 약수들 중 k번째로 작은 수를 출력하는 문제이다.

 

정수 n의 약수를 찾는 방법은 n을 어떤 값으로 나눈 나머지가 0이 되면 그 값이 약수이다.

 

약수를 찾을 때마다 count 변수를 1씩 증가시키고 그 값이 k와 같으면 반복문을 빠져나온다.

 

이때 k의 값이 count보다 크다면 k번째 약수가 존재하지 않는 것이므로 0을 반환하고 그렇지 않다면 정수 n의 k번째 작은 약수인 i를 출력한다.

반응형

'문제 해결 > BaekJoon' 카테고리의 다른 글

[백준] [C++] 2010번 플러그  (0) 2023.01.02
[백준] [C++] 10797번 10부제  (0) 2022.12.29
[백준] [C++] 9085번 더하기  (0) 2022.12.28
[백준] [C++] 10178번 할로윈의 사탕  (0) 2022.12.28
[백준] [C++] 10569번 다면체  (0) 2022.12.27