Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
70
Task/Magnanimous-numbers/Delphi/magnanimous-numbers.delphi
Normal file
70
Task/Magnanimous-numbers/Delphi/magnanimous-numbers.delphi
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
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 IsMagnanimous(N: Integer): boolean;
|
||||
var S,S1,S2: string;
|
||||
var I,I1,I2: integer;
|
||||
begin
|
||||
Result:=True;
|
||||
if N<10 then exit;
|
||||
Result:=False;
|
||||
S:=IntToStr(N);
|
||||
for I:=2 to Length(S) do
|
||||
begin
|
||||
S1:=Copy(S,1,I-1);
|
||||
S2:=Copy(S,I,(Length(S)-I)+1);
|
||||
I1:=StrToInt(S1);
|
||||
I2:=StrToInt(S2);
|
||||
if not IsPrime(I1+I2) then exit;
|
||||
end;
|
||||
Result:=True;
|
||||
end;
|
||||
|
||||
procedure MagnanimousRange(Memo: TMemo; Start,Stop: integer);
|
||||
var I,MagCnt,ItemCnt: integer;
|
||||
var S: string;
|
||||
begin
|
||||
S:='';
|
||||
MagCnt:=0;
|
||||
ItemCnt:=0;
|
||||
for I:=0 to High(Integer) do
|
||||
if IsMagnanimous(I) then
|
||||
begin
|
||||
Inc(MagCnt);
|
||||
if MagCnt>=Start then
|
||||
begin
|
||||
if MagCnt>Stop then break;
|
||||
S:=S+Format('%12d',[I]);
|
||||
Inc(ItemCnt);
|
||||
if (ItemCnt mod 5)=0 then S:=S+#$0D#$0A;
|
||||
end;
|
||||
end;
|
||||
Memo.Lines.Add(S);
|
||||
end;
|
||||
|
||||
procedure MagnanimousNumbers(Memo: TMemo);
|
||||
begin
|
||||
Memo.Lines.Add('First 45 Magnanimous Numbers');
|
||||
MagnanimousRange(Memo,0,45);
|
||||
Memo.Lines.Add('Magnanimous Numbers 241 through 250');
|
||||
MagnanimousRange(Memo,241,250);
|
||||
Memo.Lines.Add('Magnanimous Numbers 391 through 400');
|
||||
MagnanimousRange(Memo,391,400);
|
||||
end;
|
||||
Loading…
Add table
Add a link
Reference in a new issue