RosettaCodeData/Task/Jacobsthal-numbers/XPL0/jacobsthal-numbers.xpl0
2023-07-01 13:44:08 -04:00

54 lines
1.1 KiB
Text

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;
];
proc Jaco(J2); \Display 30 Jacobsthal (or -Lucas) numbers
real J2, J1, J;
int N;
[RlOut(0, J2);
J1:= 1.0;
RlOut(0, J1);
for N:= 2 to 30-1 do
[J:= J1 + 2.0*J2;
RlOut(0, J);
if rem((N+1)/5) = 0 then CrLf(0);
J2:= J1; J1:= J;
];
CrLf(0);
];
real J, J1, J2, JO;
int N;
[Format(14, 0);
Jaco(0.0);
Jaco(2.0);
J2:= 1.0;
RlOut(0, 0.0);
J1:= 1.0;
RlOut(0, J1);
for N:= 2 to 20-1 do
[J:= (J1 + 2.0*J2);
JO:= J*J1;
RlOut(0, JO);
if rem((N+1)/5) = 0 then CrLf(0);
J2:= J1; J1:= J;
];
CrLf(0);
J2:= 0.0; J1:= 1.0; N:= 0;
loop [J:= J1 + 2.0*J2;
if IsPrime(fix(J)) then
[RlOut(0, J);
N:= N+1;
if rem(N/5) = 0 then CrLf(0);
if N >= 10 then quit;
];
J2:= J1; J1:= J;
];
]