Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
62
Task/Additive-primes/Delphi/additive-primes.delphi
Normal file
62
Task/Additive-primes/Delphi/additive-primes.delphi
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
{These routines would normally be in libraries but are shown here for clarity}
|
||||
|
||||
|
||||
function IsPrime(N: int64): boolean;
|
||||
{Fast, optimised prime test}
|
||||
var I,Stop: int64;
|
||||
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
|
||||
I:=5;
|
||||
Stop:=Trunc(sqrt(N+0.0));
|
||||
Result:=False;
|
||||
while I<=Stop do
|
||||
begin
|
||||
if ((N mod I) = 0) or ((N mod (I + 2)) = 0) then exit;
|
||||
Inc(I,6);
|
||||
end;
|
||||
Result:=True;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
function SumDigits(N: integer): integer;
|
||||
{Sum the integers in a number}
|
||||
var T: integer;
|
||||
begin
|
||||
Result:=0;
|
||||
repeat
|
||||
begin
|
||||
T:=N mod 10;
|
||||
N:=N div 10;
|
||||
Result:=Result+T;
|
||||
end
|
||||
until N<1;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
procedure ShowDigitSumPrime(Memo: TMemo);
|
||||
var N,Sum,Cnt: integer;
|
||||
var NS,S: string;
|
||||
begin
|
||||
Cnt:=0;
|
||||
S:='';
|
||||
for N:=1 to 500-1 do
|
||||
if IsPrime(N) then
|
||||
begin
|
||||
Sum:=SumDigits(N);
|
||||
if IsPrime(Sum) then
|
||||
begin
|
||||
Inc(Cnt);
|
||||
S:=S+Format('%6d',[N]);
|
||||
if (Cnt mod 8)=0 then S:=S+CRLF;
|
||||
end;
|
||||
end;
|
||||
Memo.Lines.Add(S);
|
||||
Memo.Lines.Add('Count = '+IntToStr(Cnt));
|
||||
end;
|
||||
Loading…
Add table
Add a link
Reference in a new issue