Pierpont primes: Difference between revisions
Content added Content deleted
m (→{{header|FreeBASIC}}: flagged as having no output.) |
MaiconSoft (talk | contribs) (Added Delphi exemple) |
||
Line 662: | Line 662: | ||
250th Pierpont prime of the first kind: 62518864539857068333550694039553 |
250th Pierpont prime of the first kind: 62518864539857068333550694039553 |
||
250th Pierpont prime of the second kind: 4111131172000956525894875083702271</pre> |
250th Pierpont prime of the second kind: 4111131172000956525894875083702271</pre> |
||
=={{header|Delphi}}== |
|||
{{libheader| System.SysUtils}} |
|||
{{libheader| System.Math}} |
|||
{{libheader| System.StrUtils}} |
|||
{{libheader| System.Generics.Collections}} |
|||
{{libheader| System.Generics.Defaults}} |
|||
{{libheader| Velthuis.BigIntegers}} |
|||
{{libheader| Velthuis.BigIntegers.Primes}} |
|||
{{Trans|Go}} |
|||
Thanks Rudy Velthuis for the [https://github.com/rvelthuis/DelphiBigNumbers Velthuis.BigIntegers.Primes and Velthuis.BigIntegers] library.<br> |
|||
<lang Delphi> |
|||
program Pierpont_primes; |
|||
{$APPTYPE CONSOLE} |
|||
uses |
|||
System.SysUtils, |
|||
System.Math, |
|||
System.StrUtils, |
|||
System.Generics.Collections, |
|||
System.Generics.Defaults, |
|||
Velthuis.BigIntegers, |
|||
Velthuis.BigIntegers.Primes; |
|||
function Pierpont(ulim, vlim: Integer; first: boolean): TArray<BigInteger>; |
|||
begin |
|||
var p: BigInteger := 0; |
|||
var p2: BigInteger := 1; |
|||
var p3: BigInteger := 1; |
|||
for var v := 0 to vlim - 1 do |
|||
begin |
|||
for var u := 0 to ulim - 1 do |
|||
begin |
|||
p := p2 * p3; |
|||
if first then |
|||
p := p + 1 |
|||
else |
|||
p := p - 1; |
|||
if IsProbablePrime(p, 10) then |
|||
begin |
|||
SetLength(result, Length(result) + 1); |
|||
result[High(result)] := BigInteger(p); |
|||
end; |
|||
p2 := p2 * 2; |
|||
end; |
|||
p3 := p3 * 3; |
|||
p2 := 1; |
|||
end; |
|||
TArray.sort<BigInteger>(Result, TComparer<BigInteger>.Construct( |
|||
function(const Left, Right: BigInteger): Integer |
|||
begin |
|||
Result := BigInteger.Compare(Left, Right); |
|||
end)); |
|||
end; |
|||
begin |
|||
writeln('First 50 Pierpont primes of the first kind:'); |
|||
var pp := Pierpont(120, 80, True); |
|||
for var i := 0 to 49 do |
|||
begin |
|||
write(pp[i].ToString: 8, ' '); |
|||
if ((i - 9) mod 10) = 0 then |
|||
writeln; |
|||
end; |
|||
writeln('First 50 Pierpont primes of the second kind:'); |
|||
var pp2 := Pierpont(120, 80, False); |
|||
for var i := 0 to 49 do |
|||
begin |
|||
write(pp2[i].ToString: 8, ' '); |
|||
if ((i - 9) mod 10) = 0 then |
|||
writeln; |
|||
end; |
|||
Writeln('250th Pierpont prime of the first kind:', pp[249].ToString); |
|||
Writeln('250th Pierpont prime of the second kind:', pp2[249].ToString); |
|||
readln; |
|||
end.</lang> |
|||
=={{header|Factor}}== |
=={{header|Factor}}== |
||
<lang factor>USING: fry grouping io kernel locals make math math.functions |
<lang factor>USING: fry grouping io kernel locals make math math.functions |