program stern_brocot_sequence; s := stern(1200); print("First 15 elements:", s(1..15)); loop for n in [1..10] with 100 do if exists k = s(i) | k = n then print("First", n, "at", i); end if; end loop; gcds := [gcd(s(i-1), s(i)) : i in [2..1000]]; if exists g = gcds(i) | g /= 1 then print("The GCD of the pair at", i, "is not 1."); else print("All GCDs of consecutive pairs up to 1000 are 1."); end if; proc stern(n); s := [1, 1]; loop for i in [2..n div 2] do s(i*2-1) := s(i) + s(i-1); s(i*2) := s(i); end loop; return s; end proc; proc gcd(a,b); loop while b/=0 do [a, b] := [b, a mod b]; end loop; return a; end proc; end program;