Farey序列与Stern-Brocot树
一. 基础。
如图即是一棵Stern-Brocot tree。
第N排的真分数部分即为N阶Farey序。
1.对于每次在m1/n1,m2/n2中插入(m1+m2)/(n1+n2)构成下一排。
2.对于任意一个Farey序中连续的分数m1/n1,m2/n2,必有m1/n1<m2/n2。
3.Stern-Brocot树可以构成所有有理数。
4.Stern-Brocot树构成的所有分数均为最简分数,即gcd(m,n)==1。
5.任意两个构造时相邻的两个分数都满足m1n2-m2n1==1。
二.N阶Farey序列的构造。
1.递归构造。
依靠m1/n1, (m1+m2)/(n1+n2),m2/n2的法则递归构造。
Inline voidbuild(int m1,int n1,int m2,int n2){
If (m1+m2>N||n1+n2>N) return;
Build(m1,n1,m1+m2,n1+n2);
Sta[++top].a=m1+m2;
Sta[++top].b&#