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;

}