разложить дробь на цепную дробь, например 1071 делим на 462, при разложении учитываем значения отличные от 1, и записываем(метод Евклида)  получим 2 3 7
но в моем коде не пойму где ошибка выводит 2 3 6
но если взять другую дробь например 105 на 38 получаем 2 1 3 4 2, как и должно быть
Код:
#include<stdio.h>
#include<math.h>
#include <conio.h>
void evklid(int a, int b) 
 { int i=0,j=0,c=0; 
   while (a!=b) 
     { if (a>b)
        { c=a;
        a-=b;
        i+=1;
        if (a<=b) 
         { if (a==1)
            { j+=1;
              printf("\nq%d= %d",j,c);
            }
          else 
           { j+=1;
             printf("\nq%d= %d",j,i);
           }
           i=0;
         }
      }
        
       else 
        { c=b;
        b-=a;
        i+=1;
        if (b<=a) 
         { if (b==1)
            { j+=1;
              printf("\nq%d= %d",j,c);
            }
          else 
          { j+=1;
            printf("\nq%d= %d",j,i);
          }
           i=0;
         }
      }
     }
 }
 
int main()
 { int a,b;
   scanf("%d", &a);
   scanf("%d", &b);
   evklid(a,b);
   getch();
   return 0;
 }