31 lines
738 B
ObjectPascal
31 lines
738 B
ObjectPascal
function IsPrime(n: int64): boolean;
|
|
begin
|
|
if (n = 2) or (n = 3) then Result := true
|
|
else if (n <= 1) or ((n mod 2) = 0) or ((n mod 3) = 0) then Result := false
|
|
else
|
|
begin
|
|
var i := 5;
|
|
Result := False;
|
|
while i <= trunc(sqrt(n)) do
|
|
begin
|
|
if ((n mod i) = 0) or ((n mod (i + 2)) = 0) then exit;
|
|
i += 6;
|
|
end;
|
|
Result := True;
|
|
end;
|
|
end;
|
|
|
|
function mot(): sequence of biginteger;
|
|
begin
|
|
var (a, b, n) := (0bi, 1bi, 1bi);
|
|
repeat
|
|
yield b div n;
|
|
n += 1;
|
|
(a, b) := (b, (3 * (n - 1) * n * a + (2 * n - 1) * n * b) div ((n + 1) * (n - 1)))
|
|
until false;
|
|
end;
|
|
|
|
begin
|
|
foreach var val in mot.Take(42) index i do
|
|
writeln(i:2, val:20, if isprime(int64(val)) then ' is prime' else '');
|
|
end.
|