28 lines
580 B
ObjectPascal
28 lines
580 B
ObjectPascal
##
|
|
function isCurzon(n: integer; k: biginteger) := (Power(k, n) + 1) mod (k * n + 1) = 0;
|
|
|
|
function curzonnumbers(k: integer): sequence of integer;
|
|
begin
|
|
var n := 1;
|
|
while true do
|
|
begin
|
|
if iscurzon(n, k) then yield n;
|
|
n += 1;
|
|
end;
|
|
end;
|
|
|
|
foreach var k in |2, 4, 6, 8, 10| do
|
|
begin
|
|
var i := 1;
|
|
println('Curzonnumbers with base', k);
|
|
foreach var n in curzonnumbers(k) do
|
|
begin
|
|
Write(n:5);
|
|
if (i mod 10) = 0 then println;
|
|
if i = 50 then break;
|
|
i += 1;
|
|
end;
|
|
println('1000th Curzon number', curzonnumbers(k).Skip(999).First);
|
|
println;
|
|
end;
|