\\ Stern-Brocot sequence \\ 5/27/16 aev SternBrocot(n)={ my(L=List([1,1]),k=2); if(n<3,return(L)); for(i=2,n, listput(L,L[i]+L[i-1]); if(k++>=n, break); listput(L,L[i]);if(k++>=n, break)); return(Vec(L)); } \\ Find the first item in any list starting with sind index (return 0 or index). \\ 9/11/2015 aev findinlist(list, item, sind=1)={ my(idx=0, ln=#list); if(ln==0 || sind<1 || sind>ln, return(0)); for(i=sind, ln, if(list[i]==item, idx=i; break;)); return(idx); } { \\ Required tests: my(v,j); v=SternBrocot(15); print1("The first 15: "); print(v); v=SternBrocot(1200); print1("The first i@n: "); \\print(v); for(i=1,10, if(j=findinlist(v,i), print1(i,"@",j,", "))); if(j=findinlist(v,100), print(100,"@",j)); v=SternBrocot(10000); print1("All GCDs=1?: "); j=1; for(i=2,10000, j*=gcd(v[i-1],v[i])); if(j==1, print("Yes"), print("No")); }