proc Farey(N); \Show Farey sequence for N \Translation of Python program on Wikipedia: int N, A, B, C, D, K, T; [A:= 0; B:= 1; C:= 1; D:= N; Text(0, "0/1"); while C <= N do [K:= (N+B)/D; T:= C; C:= K*C - A; A:= T; T:= D; D:= K*D - B; B:= T; ChOut(0, ^ ); IntOut(0, A); ChOut(0, ^/); IntOut(0, B); ]; ]; func GCD(N, D); \Return the greatest common divisor of N and D int N, D; \numerator and denominator int R; [if D > N then [R:= D; D:= N; N:= R]; \swap D and N while D > 0 do [R:= rem(N/D); N:= D; D:= R; ]; return N; ]; \GCD func Totient(N); \Return the totient of N int N, Phi, M; [Phi:= 0; for M:= 1 to N do if GCD(M, N) = 1 then Phi:= Phi+1; return Phi; ]; func FareyLen(N); \Return length of Farey sequence for N int N, Sum, M; [Sum:= 1; for M:= 1 to N do Sum:= Sum + Totient(M); return Sum; ]; int N; [for N:= 1 to 11 do [IntOut(0, N); Text(0, ": "); Farey(N); CrLf(0); ]; for N:= 1 to 10 do [IntOut(0, N); Text(0, "00: "); IntOut(0, FareyLen(N*100)); CrLf(0); ]; RlOut(0, 3.0 * sq(1000.0) / sq(3.141592654)); CrLf(0); ]