문제
한 개의 정수를 입력받아 입력받은 정수의 약수를 모두 출력하는 프로그램을 작성하시오.
입력형식
정수 N이 주어진다. (2 ≤ N ≤ 21억)
출력형식
N의 약수를 작은 수부터 차례로 모두 출력한다.

<코드>
#include <stdio.h>
#include <math.h>
int main()
{
int N, sq; //sq: N의 제곱근
int arr[100000] = { 0, }; //약수
int count = 0, tmp;
scanf("%d", &N);
sq = (int)sqrt(N);
for (int i = 1; i <= sq; i++)
{
if (!(N%i))
{
arr[count++] = i;
if (N / i != i)
arr[count++] = N / i;
}
}
for (int i = count - 1; i >= 0; i--)
{
for (int j = 0; j<i; j++)
{
if (arr[j]>arr[j + 1])
{
tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
for (int i = 0; i<count; i++)
printf("%d ", arr[i]);
return 0;
}
'코딩 > Beginner Coder' 카테고리의 다른 글
1002 : 최대공약수, 최소공배수 (0) | 2020.05.26 |
---|---|
1658 : 최대공약수와최소공배수 (0) | 2020.05.26 |
1402 : 약수 구하기 (0) | 2020.05.25 |
1071 : 약수와 배수 (0) | 2020.05.25 |
1430 : 숫자의 개수 (0) | 2020.05.25 |