문제 해결/BaekJoon
[백준] [C++] 2501번 약수 구하기
WSLim_97
2022. 12. 29. 20:57
반응형
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를 출력한다.
반응형