Ormiston pairs: Difference between revisions
m
→{{header|Free Pascal}}: checking every second number for prime....useful especially for bigger numbers
(→{{header|Free Pascal}}: checking mod 18 =0 is faster.) |
m (→{{header|Free Pascal}}: checking every second number for prime....useful especially for bigger numbers) |
||
Line 537:
tpd10_UsedDgts2 = ^td10_UsedDgts2;
var
p_zero : tDigits10;
procedure OutIn(cnt,p1,p2:NativeInt);
Line 557:
begin
outP := p_zero;
p :=
until r
until r = 0;▼
end;
function CheckOrmiston(const d1,d2:tpd10_UsedDgts2):boolean;inline;
begin
end;
var
pSieve : tpPrimes;
Line 578 ⟶ 573:
{$align 16}
p1,p2 :tDigits10;
pr,
Begin
T0 := now;
Line 585 ⟶ 580:
T1 := now;
Writeln('time for sieving ',FormatDateTime('NN:SS.ZZZ',T1-T0));
pSieve := @PrimeSieve[0];
prLimit := 100*1000;
cnt := 0;
repeat
repeat
delta += 2;
until pSieve[pr];
if pr > limit then
BREAK;
if
begin
Convert2Digits10(pr,p1);
Convert2Digits10(
if CheckOrmiston(@p1,@p2) then
begin
inc(cnt);
IF cnt <= 30 then
OutIn(cnt,
end;
end;
if pr >=prLimit then
prlimit:= OutByPot10(cnt,prlimit);
Line 618 ⟶ 611:
{{out|@TIO.RUN}}
<pre>
time for sieving 00:00.
[ 1,913| 1,931][18,379|18,397][19,013|19,031][25,013|25,031][34,613|34,631]
[35,617|35,671][35,879|35,897][36,979|36,997][37,379|37,397][37,813|37,831]
Line 629 ⟶ 622:
3,722 Ormiston pairs before 10,000,000
34,901 Ormiston pairs before 100,000,000
▲Real time: 0.648 s User time: 0.557 s Sys. time: 0.085 s CPU share: 99.05 %
@home 1E10
// Limit= 10*1000*1000*1000;
Line 639 ⟶ 631:
3,037,903 Ormiston pairs before 10,000,000,000
real
</pre>
|