3개 정수 입력해서 최대공약수 먼저 구하고 그 공약수의 약수를 구해서 그 약수중에서 k번째인걸 구하는 식으로 했는데 약수를 배열에 저장하고 k - 1번째를 출력하는 식으로 했는데 자꾸 이상하게 나옴 24, 48, 96, 4를 입력하면 4번째가 안 나오고 24가 나옴 뭐가 잘 못 된거임??
#include <stdio.h>
int gcd(int x, int y)
{
if (y == 0)
return x;
else
return gcd(y, x % y);
}
int gcd1(int t, int c) // t = 최대공약수, c = k번째
{
int i;
int p = 0;
int arr[20] = { 0, };
for (i = 1; i <= t; i++)
{
if (t % i == 0)
{
printf("%d ", i);
arr[p] = t;
p++;
}
}
printf("\n");
return arr[c - 1];
}
int main()
{
int x, y, z, k;
int fm, last, kmin;
scanf_s("%d %d %d %d", &x, &y, &z, &k);
fm = gcd(x, y);
last = gcd(fm, z);
printf("%d\n", last);
kmin = gcd1(last, k);
printf("%d", kmin);
return 0;
}
댓글 0