func IsPrime(N); \Return 'true' if N is prime int N, I; [if N <= 2 then return N = 2; if (N&1) = 0 then \even >2\ return false; for I:= 3 to sqrt(N) do [if rem(N/I) = 0 then return false; I:= I+1; ]; return true; ]; func SumDiv(Num); \Return sum of proper divisors of Num int Num, Div, Sum, Quot; [Div:= 2; Sum:= 0; loop [Quot:= Num/Div; if Div > Quot then quit; if rem(0) = 0 then [Sum:= Sum + Div; if Div # Quot then Sum:= Sum + Quot; ]; Div:= Div+1; ]; return Sum+1; ]; func GCD(A, B); \Return greatest common divisor of A and B int A, B; [while A#B do if A>B then A:= A-B else B:= B-A; return A; ]; func Duff(N); \Return 'true' if N is a Duffinian number int N; [if IsPrime(N) then return false; return GCD(SumDiv(N), N) = 1; ]; int C, N; [Format(4, 0); C:= 0; N:= 4; loop [if Duff(N) then [RlOut(0, float(N)); C:= C+1; if C >= 50 then quit; if rem(C/20) = 0 then CrLf(0); ]; N:= N+1; ]; CrLf(0); CrLf(0); Format(5, 0); C:= 0; N:= 4; loop [if Duff(N) & Duff(N+1) & Duff(N+2) then [RlOut(0, float(N)); RlOut(0, float(N+1)); RlOut(0, float(N+2)); CrLf(0); C:= C+1; if C >= 15 then quit; ]; N:= N+1; ]; ]