문제

한 개의 정수를 입력받아 입력받은 정수의 약수를 모두 출력하는 프로그램을 작성하시오.

 

입력형식

정수 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

+ Recent posts