#include <stdio.h>
#include <stdlib.h>

int decimal (int m);
int remainder (int m);

int main (void)
{
    int x, y, z = 1;
    printf("n = ");
    scanf("%d", &x);
    y = decimal(x);
    z = remainder(x);
   
    printf("%d", y);
    printf("가장 짧은 순환마디를 가진 분수는 1/%d", z);
}

int decimal (int m)
{
    int a, b, c = 1;
    while(1)
    {
            a = a * 10;
            b = a % m;
            if (b == 1) break;
            c = c + 1;
    }

    return c;
}

int remainder (int m)
{
    int i, j, k, l = 1;
    int rem[10000] = {0,};
    int digits[10000] = {0,};   
    i = 0;
    while (1)
    {
          rem[i] = l;
          l = l * 10;
          digits[i] = l / m;
          l = l % m;
          j = i - 1;
          while (j >= 0 && rem[i] != rem[j]) --j;
          if (j >= 0) break;
          i = i + 1;
    }     
           
    return i;
}

decimal함수에서 무한루프가 도는거 같은데 왜 그런거지...????

 

지역함수 초기화를 제대로 못한건가???