Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Распечатать в порядке возрастания все несократимые дроби, знаменатель которых не превосходит n, n<=100.
static void Main(string[] args) {
int N=100;
int a=0,b=1,c=1,d=N;
Console.Write("0/1 1/{0} ",N);
do {
int m=(N+b)/d;
int e=m*c-a,f=m*d-b;
a=c; c=e;
b=d; d=f;
Console.Write("{0}/{1} ",c,d);
} while(c<d);
}
дерево Штерна-Броко можно использовать в качестве системы счисления
Inv([0;c])=c Inv([1])=[1] Inv([b])=[0;b] Inv([b;c])=[0;b;c] [a]+[c]=[a+c] [a;b]+[c]=[a+c;b] [a;b]+[c;d]=[a+c]+([b]+[d])*Inv([b]*[d]) [a;b]/[c]=[a/c]+Inv([c]*Inv([a%c;b])) [a]*[b;c]=[a*b]+Inv(c/[a]) [a;b]*[c;d]=[a;b]+Inv(b/[c])+Inv(c/[b])+Inv(b*d)
Об одной изящной конструкции