Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
63
Task/Duffinian-numbers/XPL0/duffinian-numbers.xpl0
Normal file
63
Task/Duffinian-numbers/XPL0/duffinian-numbers.xpl0
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
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;
|
||||
];
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue