Data update
This commit is contained in:
parent
8e4e15fa56
commit
72eb4943cb
1853 changed files with 35514 additions and 9441 deletions
34
Task/Long-primes/PascalABC.NET/long-primes.pas
Normal file
34
Task/Long-primes/PascalABC.NET/long-primes.pas
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
function gen_primes_upto(n: integer): sequence of integer;
|
||||
begin
|
||||
if n < 3 then exit;
|
||||
var table := |True| * n;
|
||||
var sqrtn := n.sqrt.Floor;
|
||||
for var i := 2 to sqrtn do
|
||||
if table[i] then
|
||||
for var j := i * i to n - 1 step i do
|
||||
table[j] := False;
|
||||
|
||||
yield 2;
|
||||
for var i := 3 to n step 2 do
|
||||
if table[i] then yield i
|
||||
end;
|
||||
|
||||
function period(n: integer): integer;
|
||||
begin
|
||||
var r := 1;
|
||||
repeat
|
||||
r := r * 10 mod n;
|
||||
result += 1;
|
||||
until r <= 1;
|
||||
end;
|
||||
|
||||
begin
|
||||
writeln('The long primes up to 500 are:');
|
||||
var primes := Gen_primes_upto(64000).Skip(1);
|
||||
primes.Where(x -> (x < 500) and (period(x) = x - 1)).Println;
|
||||
writeln;
|
||||
|
||||
writeln('The number of long primes up to:');
|
||||
foreach var n in |500, 1000, 2000, 4000, 8000, 16000, 32000, 64000| do
|
||||
writeln(n:6, ' is ', primes.Where(x -> (x < n) and (period(x) = x - 1)).Count);
|
||||
end.
|
||||
Loading…
Add table
Add a link
Reference in a new issue