Find adjacent primes which differ by a square integer: Difference between revisions
Content added Content deleted
Drkameleon (talk | contribs) (added Arturo) |
No edit summary |
||
Line 353: | Line 353: | ||
981887 - 981823 = 64 = 8^2 |
981887 - 981823 = 64 = 8^2 |
||
997877 - 997813 = 64 = 8^2</pre> |
997877 - 997813 = 64 = 8^2</pre> |
||
=={{header|Delphi}}== |
|||
{{works with|Delphi|6.0}} |
|||
{{libheader|SysUtils,StdCtrls}} |
|||
<syntaxhighlight lang="Delphi"> |
|||
function IsPrime(N: integer): boolean; |
|||
{Optimised prime test - about 40% faster than the naive approach} |
|||
var I,Stop: integer; |
|||
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)); |
|||
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 GetNextPrime(Start: integer): integer; |
|||
{Get the next prime number after Start} |
|||
begin |
|||
repeat Inc(Start) |
|||
until IsPrime(Start); |
|||
Result:=Start; |
|||
end; |
|||
procedure ShowPrimeDiffs(Memo: TMemo); |
|||
var P1,P2,D: integer; |
|||
begin |
|||
P1:=GetNextPrime(2); |
|||
repeat |
|||
begin |
|||
P2:=GetNextPrime(P1); |
|||
D:=P2 - P1; |
|||
if (D>36) and (Frac(sqrt(D))=0) then |
|||
begin |
|||
Memo.Lines.Add(IntToStr(P2)+' - '+IntToStr(P1)+' = '+IntToStr(D)); |
|||
end; |
|||
P1:=P2; |
|||
end |
|||
until P2>=1000000; |
|||
end; |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
89753 - 89689 = 64 |
|||
107441 - 107377 = 64 |
|||
288647 - 288583 = 64 |
|||
368021 - 367957 = 64 |
|||
381167 - 381103 = 64 |
|||
396833 - 396733 = 100 |
|||
400823 - 400759 = 64 |
|||
445427 - 445363 = 64 |
|||
623171 - 623107 = 64 |
|||
625763 - 625699 = 64 |
|||
637067 - 637003 = 64 |
|||
710777 - 710713 = 64 |
|||
725273 - 725209 = 64 |
|||
779477 - 779413 = 64 |
|||
801947 - 801883 = 64 |
|||
803813 - 803749 = 64 |
|||
821741 - 821677 = 64 |
|||
832583 - 832519 = 64 |
|||
838349 - 838249 = 100 |
|||
844841 - 844777 = 64 |
|||
883871 - 883807 = 64 |
|||
912167 - 912103 = 64 |
|||
919511 - 919447 = 64 |
|||
954827 - 954763 = 64 |
|||
981887 - 981823 = 64 |
|||
997877 - 997813 = 64 |
|||
</pre> |
|||
=={{header|F_Sharp|F#}}== |
=={{header|F_Sharp|F#}}== |