Find prime numbers of the form n*n*n+2: Difference between revisions

Added Easylang
(Added Perl)
(Added Easylang)
 
(44 intermediate revisions by 27 users not shown)
Line 1:
{{Draft task|Prime Numbers}}
 
;Task: Find prime numbers of the form &nbsp; <big> n<sup>''3''</sup>+2</big>, &nbsp; where 0 < n < 200
<br><br>
 
=={{header|11l}}==
{{trans|Python}}
 
<syntaxhighlight lang="11l">
F isPrime(n)
L(i) 2 .. Int(n ^ 0.5)
I n % i == 0
R 0B
R 1B
 
L(n) 1..199
I isPrime(n ^ 3 + 2)
print(n"\t"(n ^ 3 + 2))
</syntaxhighlight>
 
{{out}}
<pre>
1 3
3 29
5 127
29 24391
45 91127
63 250049
65 274627
69 328511
71 357913
83 571789
105 1157627
113 1442899
123 1860869
129 2146691
143 2924209
153 3581579
171 5000213
173 5177719
189 6751271
</pre>
 
=={{header|Ada}}==
<syntaxhighlight lang="ada">with Ada.Text_Io;
 
procedure Find_Primes is
 
type Number is new Long_Integer range 0 .. Long_Integer'Last;
package Number_Io is new Ada.Text_Io.Integer_Io (Number);
 
function Is_Prime (A : Number) return Boolean is
D : Number;
begin
if A < 2 then return False; end if;
if A in 2 .. 3 then return True; end if;
if A mod 2 = 0 then return False; end if;
if A mod 3 = 0 then return False; end if;
D := 5;
while D * D <= A loop
if A mod D = 0 then
return False;
end if;
D := D + 2;
if A mod D = 0 then
return False;
end if;
D := D + 4;
end loop;
return True;
end Is_Prime;
 
P : Number;
begin
Ada.Text_Io.Put_Line (" N N**3+2");
Ada.Text_Io.Put_Line ("------------");
for N in Number range 1 .. 199 loop
P := N**3 + 2;
if Is_Prime (P) then
Number_Io.Put (N, Width => 3); Ada.Text_Io.Put (" ");
Number_Io.Put (P, Width => 7);
Ada.Text_Io.New_Line;
end if;
end loop;
end Find_Primes;</syntaxhighlight>
{{out}}
<pre> N N**3+2
------------
1 3
3 29
5 127
29 24391
45 91127
63 250049
65 274627
69 328511
71 357913
83 571789
105 1157627
113 1442899
123 1860869
129 2146691
143 2924209
153 3581579
171 5000213
173 5177719
189 6751271</pre>
 
=={{header|ALGOL 68}}==
<syntaxhighlight lang="algol68">BEGIN # Find n such that n^3 + 2 is a prime for n < 200 #
FOR n TO 199 DO
INT candidate = ( n * n * n ) + 2;
# there will only be 199 candidates, so a primality check by trial #
# division should be OK #
BOOL is prime := TRUE;
FOR f FROM 2 TO ENTIER sqrt( candidate )
WHILE is prime := candidate MOD f /= 0
DO SKIP OD;
IF is prime THEN
# n^3 + 2 is prime #
print( ( whole( n, -4 ), ": ", whole( candidate, -8 ), newline ) )
FI
OD
END</syntaxhighlight>
{{out}}
<pre>
1: 3
3: 29
5: 127
29: 24391
45: 91127
63: 250049
65: 274627
69: 328511
71: 357913
83: 571789
105: 1157627
113: 1442899
123: 1860869
129: 2146691
143: 2924209
153: 3581579
171: 5000213
173: 5177719
189: 6751271
</pre>
 
=={{header|ALGOL W}}==
<syntaxhighlight lang="algolw">begin % Find n such that n^3 + 2 is a prime for n < 200 %
for n := 1 until 199 do begin
integer candidate;
logical isPrime;
candidate := ( n * n * n ) + 2;
% there will only be 199 candidates, so a primality check by trial %
% division should be OK %
isPrime := true;
for f := 2 until entier( sqrt( candidate ) ) do begin
isPrime := candidate rem f not = 0;
if not isPrime then goto endPrimalityCheck
end for_f ;
endPrimalityCheck:
if isPrime then begin
% n^3 + 2 is prime %
write( i_w := 4, s_w := 0, n, ": ", i_w := 8, candidate )
end if_isPrime
end for_n
end.</syntaxhighlight>
{{out}}
<pre>
1: 3
3: 29
5: 127
29: 24391
45: 91127
63: 250049
65: 274627
69: 328511
71: 357913
83: 571789
105: 1157627
113: 1442899
123: 1860869
129: 2146691
143: 2924209
153: 3581579
171: 5000213
173: 5177719
189: 6751271
</pre>
 
=={{header|Arturo}}==
<syntaxhighlight lang="arturo">primes: []
loop 1..199 'i [
num: 2 + i^3
if prime? num ->
'primes ++ @[to :string i, to :string num]
]
 
loop primes [i, num][
prints pad i 4
print pad num 9
]</syntaxhighlight>
 
{{out}}
 
<pre> 1 3
3 29
5 127
29 24391
45 91127
63 250049
65 274627
69 328511
71 357913
83 571789
105 1157627
113 1442899
123 1860869
129 2146691
143 2924209
153 3581579
171 5000213
173 5177719
189 6751271</pre>
 
=={{header|AWK}}==
<syntaxhighlight lang="awk">
# syntax: GAWK -f FIND_PRIME_NUMBERS_OF_THE_FORM_NNN2.AWK
BEGIN {
start = 1
stop = 200
for (n=start; n<=stop; n++) {
p = n*n*n + 2
if (is_prime(p)) {
printf("%3d %'10d\n",n,p)
count++
}
}
printf("Prime numbers %d-%d of the form n*n*n+2: %d\n",start,stop,count)
exit(0)
}
function is_prime(x, i) {
if (x <= 1) {
return(0)
}
for (i=2; i<=int(sqrt(x)); i++) {
if (x % i == 0) {
return(0)
}
}
return(1)
}
</syntaxhighlight>
{{out}}
<pre>
1 3
3 29
5 127
29 24,391
45 91,127
63 250,049
65 274,627
69 328,511
71 357,913
83 571,789
105 1,157,627
113 1,442,899
123 1,860,869
129 2,146,691
143 2,924,209
153 3,581,579
171 5,000,213
173 5,177,719
189 6,751,271
Prime numbers 1-200 of the form n*n*n+2: 19
</pre>
 
=={{header|C}}==
{{trans|Wren}}
<langsyntaxhighlight lang="c">#include <stdio.h>
#include <stdbool.h>
#include <locale.h>
Line 36 ⟶ 308:
}
return 0;
}</langsyntaxhighlight>
 
{{out}}
Line 59 ⟶ 331:
n = 173 => n³ + 2 = 5,177,719
n = 189 => n³ + 2 = 6,751,271
</pre>
 
=={{header|C++}}==
<syntaxhighlight lang="cpp">#include <iomanip>
#include <iostream>
 
bool is_prime(unsigned int n) {
if (n < 2)
return false;
if (n % 2 == 0)
return n == 2;
if (n % 3 == 0)
return n == 3;
for (unsigned int p = 5; p * p <= n; p += 4) {
if (n % p == 0)
return false;
p += 2;
if (n % p == 0)
return false;
}
return true;
}
 
int main() {
for (unsigned int n = 1; n < 200; n += 2) {
auto p = n * n * n + 2;
if (is_prime(p))
std::cout << std::setw(3) << n << std::setw(9) << p << '\n';
}
}</syntaxhighlight>
 
{{out}}
<pre>
1 3
3 29
5 127
29 24391
45 91127
63 250049
65 274627
69 328511
71 357913
83 571789
105 1157627
113 1442899
123 1860869
129 2146691
143 2924209
153 3581579
171 5000213
173 5177719
189 6751271
</pre>
 
=={{header|CLU}}==
<syntaxhighlight lang="clu">is_prime = proc (n: int) returns (bool)
if n<2 then return(false) end
if n//2=0 then return(n=2) end
if n//3=0 then return(n=3) end
d: int := 5
while d*d <= n do
if n//d=0 then return(false) end
d := d+2
if n//d=0 then return(false) end
d := d+4
end
return(true)
end is_prime
 
n3plus2_primes = iter (max: int) yields (int,int)
for n: int in int$from_to(1, max) do
p: int := n**3 + 2
if is_prime(p) then yield(n,p) end
end
end n3plus2_primes
 
start_up = proc ()
po: stream := stream$primary_output()
for n, p: int in n3plus2_primes(200) do
stream$puts(po, "n = ")
stream$putright(po, int$unparse(n), 3)
stream$puts(po, " => n^3 + 2 = ")
stream$putright(po, int$unparse(p), 7)
stream$putl(po, "")
end
end start_up</syntaxhighlight>
{{out}}
<pre>n = 1 => n^3 + 2 = 3
n = 3 => n^3 + 2 = 29
n = 5 => n^3 + 2 = 127
n = 29 => n^3 + 2 = 24391
n = 45 => n^3 + 2 = 91127
n = 63 => n^3 + 2 = 250049
n = 65 => n^3 + 2 = 274627
n = 69 => n^3 + 2 = 328511
n = 71 => n^3 + 2 = 357913
n = 83 => n^3 + 2 = 571789
n = 105 => n^3 + 2 = 1157627
n = 113 => n^3 + 2 = 1442899
n = 123 => n^3 + 2 = 1860869
n = 129 => n^3 + 2 = 2146691
n = 143 => n^3 + 2 = 2924209
n = 153 => n^3 + 2 = 3581579
n = 171 => n^3 + 2 = 5000213
n = 173 => n^3 + 2 = 5177719
n = 189 => n^3 + 2 = 6751271</pre>
 
=={{header|COBOL}}==
<syntaxhighlight lang="cobol"> IDENTIFICATION DIVISION.
PROGRAM-ID. N3-PLUS-2-PRIMES.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 VARIABLES.
03 N PIC 9(3).
03 N3PLUS2 PIC 9(7).
03 DIVISOR PIC 9(4).
03 DIV-SQ PIC 9(8).
03 DIV-CHECK PIC 9(4)V9(4).
03 FILLER REDEFINES DIV-CHECK.
05 FILLER PIC 9(4).
05 FILLER PIC 9(4).
88 DIVISIBLE VALUE ZERO.
03 FILLER REDEFINES N3PLUS2.
05 FILLER PIC 9(6).
05 FILLER PIC 9.
88 EVEN VALUE 0, 2, 4, 6, 8.
03 PRIME-FLAG PIC X.
88 PRIME VALUE '*'.
01 FORMAT.
03 FILLER PIC X(4) VALUE "N = ".
03 N-OUT PIC ZZ9.
03 FILLER PIC X(17) VALUE " => N ** 3 + 2 = ".
03 N3PLUS2-OUT PIC Z(6)9.
PROCEDURE DIVISION.
BEGIN.
PERFORM TRY-N VARYING N FROM 1 BY 1
UNTIL N IS GREATER THAN 200.
STOP RUN.
TRY-N.
COMPUTE N3PLUS2 = N ** 3 + 2.
PERFORM CHECK-PRIME.
IF PRIME,
MOVE N TO N-OUT,
MOVE N3PLUS2 TO N3PLUS2-OUT,
DISPLAY FORMAT.
CHECK-PRIME SECTION.
BEGIN.
MOVE SPACE TO PRIME-FLAG.
IF N3PLUS2 IS LESS THAN 5, GO TO TRIVIAL.
IF EVEN, GO TO CHECK-PRIME-DONE.
DIVIDE N3PLUS2 BY 3 GIVING DIV-CHECK.
IF DIVISIBLE, GO TO CHECK-PRIME-DONE.
MOVE ZERO TO DIV-SQ.
MOVE 5 TO DIVISOR.
MOVE '*' TO PRIME-FLAG.
PERFORM CHECK-DIVISOR
UNTIL NOT PRIME OR DIV-SQ IS GREATER THAN N3PLUS2.
GO TO CHECK-PRIME-DONE.
CHECK-DIVISOR.
MULTIPLY DIVISOR BY DIVISOR GIVING DIV-SQ.
DIVIDE N3PLUS2 BY DIVISOR GIVING DIV-CHECK.
IF DIVISIBLE, MOVE SPACE TO PRIME-FLAG.
ADD 2 TO DIVISOR.
DIVIDE N3PLUS2 BY DIVISOR GIVING DIV-CHECK.
IF DIVISIBLE, MOVE SPACE TO PRIME-FLAG.
ADD 4 TO DIVISOR.
TRIVIAL.
IF N3PLUS2 IS EQUAL TO 2 OR EQUAL TO 3,
MOVE '*' TO PRIME-FLAG.
CHECK-PRIME-DONE.
EXIT.</syntaxhighlight>
{{out}}
<pre>N = 1 => N ** 3 + 2 = 3
N = 3 => N ** 3 + 2 = 29
N = 5 => N ** 3 + 2 = 127
N = 29 => N ** 3 + 2 = 24391
N = 45 => N ** 3 + 2 = 91127
N = 63 => N ** 3 + 2 = 250049
N = 65 => N ** 3 + 2 = 274627
N = 69 => N ** 3 + 2 = 328511
N = 71 => N ** 3 + 2 = 357913
N = 83 => N ** 3 + 2 = 571789
N = 105 => N ** 3 + 2 = 1157627
N = 113 => N ** 3 + 2 = 1442899
N = 123 => N ** 3 + 2 = 1860869
N = 129 => N ** 3 + 2 = 2146691
N = 143 => N ** 3 + 2 = 2924209
N = 153 => N ** 3 + 2 = 3581579
N = 171 => N ** 3 + 2 = 5000213
N = 173 => N ** 3 + 2 = 5177719
N = 189 => N ** 3 + 2 = 6751271</pre>
 
=={{header|Cowgol}}==
<syntaxhighlight lang="cowgol">include "cowgol.coh";
 
sub is_prime(n: uint32): (p: uint8) is
p := 0;
if n<=4 then
if n==2 or n==3 then
p := 1;
end if;
return;
end if;
if n&1 == 0 or n%3 == 0 then
return;
end if;
var d: uint32 := 5;
while d*d <= n loop
if n%d==0 then return; end if;
d := d+2;
if n%d==0 then return; end if;
d := d+4;
end loop;
p := 1;
end sub;
 
var n: uint32 := 1;
while n < 200 loop
var p: uint32 := n*n*n + 2;
if is_prime(p) != 0 then
print("n = ");
print_i32(n);
print("\t=> n^3 + 2 = ");
print_i32(p);
print_nl();
end if;
n := n+1;
end loop;</syntaxhighlight>
{{out}}
<pre>n = 1 => n^3 + 2 = 3
n = 3 => n^3 + 2 = 29
n = 5 => n^3 + 2 = 127
n = 29 => n^3 + 2 = 24391
n = 45 => n^3 + 2 = 91127
n = 63 => n^3 + 2 = 250049
n = 65 => n^3 + 2 = 274627
n = 69 => n^3 + 2 = 328511
n = 71 => n^3 + 2 = 357913
n = 83 => n^3 + 2 = 571789
n = 105 => n^3 + 2 = 1157627
n = 113 => n^3 + 2 = 1442899
n = 123 => n^3 + 2 = 1860869
n = 129 => n^3 + 2 = 2146691
n = 143 => n^3 + 2 = 2924209
n = 153 => n^3 + 2 = 3581579
n = 171 => n^3 + 2 = 5000213
n = 173 => n^3 + 2 = 5177719
n = 189 => n^3 + 2 = 6751271</pre>
 
=={{header|Delphi}}==
{{libheader| System.SysUtils}}
{{libheader| PrimTrial}}
<syntaxhighlight lang="delphi">
program Find_prime_numbers_of_the_form_n_n_n_plus_2;
 
{$APPTYPE CONSOLE}
 
uses
System.SysUtils,
PrimTrial;
 
function Commatize(n: NativeInt): string;
var
fmt: TFormatSettings;
begin
fmt := TFormatSettings.Create('en-Us');
Result := double(n).ToString(ffNumber, 64, 0, fmt);
end;
 
const
limit = 200;
 
begin
for var n := 1 to limit - 1 do
begin
var p := n * n * n + 2;
if isPrime(p) then
writeln('n = ', n: 3, ' => n^3 + 2 = ', Commatize(p): 9);
end;
readln;
end.</syntaxhighlight>
{{out}}
<pre>n = 1 => n^3 + 2 = 3
n = 3 => n^3 + 2 = 29
n = 5 => n^3 + 2 = 127
n = 29 => n^3 + 2 = 24,391
n = 45 => n^3 + 2 = 91,127
n = 63 => n^3 + 2 = 250,049
n = 65 => n^3 + 2 = 274,627
n = 69 => n^3 + 2 = 328,511
n = 71 => n^3 + 2 = 357,913
n = 83 => n^3 + 2 = 571,789
n = 105 => n^3 + 2 = 1,157,627
n = 113 => n^3 + 2 = 1,442,899
n = 123 => n^3 + 2 = 1,860,869
n = 129 => n^3 + 2 = 2,146,691
n = 143 => n^3 + 2 = 2,924,209
n = 153 => n^3 + 2 = 3,581,579
n = 171 => n^3 + 2 = 5,000,213
n = 173 => n^3 + 2 = 5,177,719
n = 189 => n^3 + 2 = 6,751,271</pre>
 
=={{header|Draco}}==
<syntaxhighlight lang="draco">proc nonrec is_prime(ulong n) bool:
ulong d;
bool prime;
if n<=4 then n=2 or n=3
elif n&1=0 or n%3=0 then false
else
d := 5;
prime := true;
while prime and d*d <= n do
if n%d=0 then prime := false fi;
d := d+2;
if n%d=0 then prime := false fi;
d := d+4
od;
prime
fi
corp
 
proc nonrec main() void:
word n;
ulong p;
for n from 1 upto 200 do
p := make(n,ulong);
p := p*p*p + 2;
if is_prime(p) then
writeln("n = ", n:3, " => n^3 + 2 = ", p:7)
fi
od
corp</syntaxhighlight>
{{out}}
<pre>n = 1 => n^3 + 2 = 3
n = 3 => n^3 + 2 = 29
n = 5 => n^3 + 2 = 127
n = 29 => n^3 + 2 = 24391
n = 45 => n^3 + 2 = 91127
n = 63 => n^3 + 2 = 250049
n = 65 => n^3 + 2 = 274627
n = 69 => n^3 + 2 = 328511
n = 71 => n^3 + 2 = 357913
n = 83 => n^3 + 2 = 571789
n = 105 => n^3 + 2 = 1157627
n = 113 => n^3 + 2 = 1442899
n = 123 => n^3 + 2 = 1860869
n = 129 => n^3 + 2 = 2146691
n = 143 => n^3 + 2 = 2924209
n = 153 => n^3 + 2 = 3581579
n = 171 => n^3 + 2 = 5000213
n = 173 => n^3 + 2 = 5177719
n = 189 => n^3 + 2 = 6751271</pre>
 
=={{header|EasyLang}}==
<syntaxhighlight>
fastfunc isprim num .
i = 2
while i <= sqrt num
if num mod i = 0
return 0
.
i += 1
.
return 1
.
for n = 1 to 199
p = pow n 3 + 2
if isprim p = 1
write p & " "
.
.
</syntaxhighlight>
{{out}}
<pre>
3 29 127 24391 91127 250049 274627 328511 357913 571789 1157627 1442899 1860869 2146691 2924209 3581579 5000213 5177719 6751271
</pre>
 
=={{header|F_Sharp|F#}}==
This task uses [[Extensible_prime_generator#The_functions|Extensible Prime Generator (F#)]].<br>
<langsyntaxhighlight lang="fsharp">
[1..2..200]|>Seq.filter(fun n->isPrime(2+pown n 3))|>Seq.iter(fun n->printfn "n=%3d -> %d" n (2+pown n 3))
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 88 ⟶ 745:
n=189 -> 6751271
</pre>
 
=={{header|Factor}}==
Using the parity optimization from the Wren entry:
{{works with|Factor|0.99 2021-02-05}}
<langsyntaxhighlight lang="factor">USING: formatting kernel math math.functions math.primes
math.ranges sequences tools.memory.private ;
 
Line 97 ⟶ 755:
dup 3 ^ 2 + dup prime?
[ commas "n = %3d => n³ + 2 = %9s\n" printf ] [ 2drop ] if
] each</langsyntaxhighlight>
Or, using local variables:
{{trans|Wren}}
{{works with|Factor|0.99 2021-02-05}}
<langsyntaxhighlight lang="factor">USING: formatting kernel math math.primes math.ranges sequences
tools.memory.private ;
 
Line 111 ⟶ 769:
[ n p commas "n = %3d => n³ + 2 = %9s\n" printf ] when
] each
]</langsyntaxhighlight>
{{out}}
<pre>
Line 134 ⟶ 792:
n = 189 => n³ + 2 = 6,751,271
</pre>
 
=={{header|Fermat}}==
<syntaxhighlight lang="fermat">for n=1,199 do if Isprime(n^3+2)=1 then !!(n,n^3+2) fi od</syntaxhighlight>
{{out}}
<pre>
1 3
3 29
5 127
29 24391
45 91127
63 250049
65 274627
69 328511
71 357913
83 571789
105 1157627
113 1442899
123 1860869
129 2146691
143 2924209
153 3581579
171 5000213
173 5177719
189 6751271
</pre>
 
=={{header|Forth}}==
{{works with|Gforth}}
<syntaxhighlight lang="forth">: prime? ( n -- flag )
dup 2 < if drop false exit then
dup 2 mod 0= if 2 = exit then
dup 3 mod 0= if 3 = exit then
5
begin
2dup dup * >=
while
2dup mod 0= if 2drop false exit then
2 +
2dup mod 0= if 2drop false exit then
4 +
repeat
2drop true ;
 
: main
200 1 do
i i i * * 2 + dup prime? if
i 3 .r 9 .r cr
else
drop
then
2 +loop ;
 
main
bye</syntaxhighlight>
 
{{out}}
<pre>
1 3
3 29
5 127
29 24391
45 91127
63 250049
65 274627
69 328511
71 357913
83 571789
105 1157627
113 1442899
123 1860869
129 2146691
143 2924209
153 3581579
171 5000213
173 5177719
189 6751271
</pre>
 
=={{header|FreeBASIC}}==
Use the code from [[Primality by trial division#FreeBASIC]] as an include.
<syntaxhighlight lang="freebasic">#include"isprime.bas"
 
for n as uinteger = 1 to 200
if isprime(n^3+2) then
print n, n^3+2
end if
next n</syntaxhighlight>
{{out}}
<pre>
1 3
3 29
5 127
29 24391
45 91127
63 250049
65 274627
69 328511
71 357913
83 571789
105 1157627
113 1442899
123 1860869
129 2146691
143 2924209
153 3581579
171 5000213
173 5177719
189 6751271
</pre>
 
=={{header|Frink}}==
<syntaxhighlight lang="frink">for n = 1 to 199
if isPrime[n^3 + 2]
println["$n\t" + n^3+2]</syntaxhighlight>
{{out}}
<pre>
1 3
3 29
5 127
29 24391
45 91127
63 250049
65 274627
69 328511
71 357913
83 571789
105 1157627
113 1442899
123 1860869
129 2146691
143 2924209
153 3581579
171 5000213
173 5177719
189 6751271
</pre>
 
=={{header|Fōrmulæ}}==
 
{{FormulaeEntry|page=https://formulae.org/?script=examples/Find_prime_numbers_of_the_form_n%C2%B3%2B2}}
 
'''Solution'''
 
[[File:Fōrmulæ - Find prime numbers of the form n³ + 2 01.png]]
 
[[File:Fōrmulæ - Find prime numbers of the form n³ + 2 02.png]]
 
=={{header|Go}}==
<langsyntaxhighlight lang="go">package main
 
import "fmt"
Line 187 ⟶ 991:
}
}
}</langsyntaxhighlight>
 
{{out}}
Line 210 ⟶ 1,014:
n = 173 => n³ + 2 = 5,177,719
n = 189 => n³ + 2 = 6,751,271
</pre>
 
=={{header|J}}==
<syntaxhighlight lang="j">([,.2+]^3:)@([#~1:p:2+]^3:) }.i.200x</syntaxhighlight>
{{out}}
<pre> 1 3
3 29
5 127
29 24391
45 91127
63 250049
65 274627
69 328511
71 357913
83 571789
105 1157627
113 1442899
123 1860869
129 2146691
143 2924209
153 3581579
171 5000213
173 5177719
189 6751271</pre>
 
=={{header|jq}}==
{{works with|jq}}
'''Works with gojq, the Go implementation of jq'''
 
Using a definition of `is_prime` such as can be found at
[[Safe_primes_and_unsafe_primes]]:
<syntaxhighlight lang="jq">
range(1;200) | pow(.; 3) + 2 | select(is_prime)
</syntaxhighlight>
{{out}}
<pre>
3
29
127
24391
91127
250049
274627
328511
357913
571789
1157627
1442899
1860869
2146691
2924209
3581579
5000213
5177719
6751271
</pre>
 
=={{header|Julia}}==
<langsyntaxhighlight lang="julia"># Formatting output as in Go example.
using Primes, Formatting
 
Line 234 ⟶ 1,093:
 
filterprintresults(isncubedplus2prime, 0, 200, tostring)
</langsyntaxhighlight>{{out}}
<pre>
n = 1 => n³ + 2 = 3
Line 259 ⟶ 1,118:
</pre>
=== One-liner version ===
<langsyntaxhighlight lang="julia">using Primes; println(filter(isprime, map(x -> x^3 + 2, 1:199)))</langsyntaxhighlight>{{out}}<pre>
[3, 29, 127, 24391, 91127, 250049, 274627, 328511, 357913, 571789, 1157627, 1442899, 1860869, 2146691, 2924209, 3581579, 5000213, 5177719, 6751271]</pre>
 
=={{header|MAD}}==
<syntaxhighlight lang="mad"> NORMAL MODE IS INTEGER
INTERNAL FUNCTION(P)
ENTRY TO PRIME.
WHENEVER P.L.2, FUNCTION RETURN 0B
WHENEVER P.E.P/2*2, FUNCTION RETURN P.E.2
WHENEVER P.E.P/3*3, FUNCTION RETURN P.E.3
D = 5
CHKDIV WHENEVER D*D.LE.P
WHENEVER P.E.P/D*D, FUNCTION RETURN 0B
D = D+2
WHENEVER P.E.P/D*D, FUNCTION RETURN 0B
D = D+4
TRANSFER TO CHKDIV
END OF CONDITIONAL
FUNCTION RETURN 1B
END OF FUNCTION
VECTOR VALUES FMT = $4HN = ,I3,S4,12HN*N*N + 2 = ,I7*$
THROUGH LOOP, FOR N=1, 1, N.GE.200
M = N*N*N + 2
WHENEVER PRIME.(M)
PRINT FORMAT FMT,N,M
END OF CONDITIONAL
LOOP CONTINUE
END OF PROGRAM</syntaxhighlight>
{{out}}
<pre>N = 1 N*N*N + 2 = 3
N = 3 N*N*N + 2 = 29
N = 5 N*N*N + 2 = 127
N = 29 N*N*N + 2 = 24391
N = 45 N*N*N + 2 = 91127
N = 63 N*N*N + 2 = 250049
N = 65 N*N*N + 2 = 274627
N = 69 N*N*N + 2 = 328511
N = 71 N*N*N + 2 = 357913
N = 83 N*N*N + 2 = 571789
N = 105 N*N*N + 2 = 1157627
N = 113 N*N*N + 2 = 1442899
N = 123 N*N*N + 2 = 1860869
N = 129 N*N*N + 2 = 2146691
N = 143 N*N*N + 2 = 2924209
N = 153 N*N*N + 2 = 3581579
N = 171 N*N*N + 2 = 5000213
N = 173 N*N*N + 2 = 5177719
N = 189 N*N*N + 2 = 6751271</pre>
 
=={{header|Mathematica}}/{{header|Wolfram Language}}==
<syntaxhighlight lang="mathematica">Select[Range[199]^3 + 2, PrimeQ]</syntaxhighlight>
{{out}}
<pre>{3, 29, 127, 24391, 91127, 250049, 274627, 328511, 357913, 571789, 1157627, 1442899, 1860869, 2146691, 2924209, 3581579, 5000213, 5177719, 6751271}</pre>
 
=={{header|Nim}}==
<syntaxhighlight lang="nim">import strutils
 
func isPrime(n: Positive): bool =
if n < 2: return false
if n mod 2 == 0: return n == 2
if n mod 3 == 0: return n == 3
var d = 5
while d * d <= n:
if n mod d == 0: return false
inc d, 2
if n mod d == 0: return false
inc d, 4
result = true
 
for n in 1..<200:
let p = n * n * n + 2
if p.isPrime:
echo ($n).align(3), " → ", p</syntaxhighlight>
 
{{out}}
<pre> 1 → 3
3 → 29
5 → 127
29 → 24391
45 → 91127
63 → 250049
65 → 274627
69 → 328511
71 → 357913
83 → 571789
105 → 1157627
113 → 1442899
123 → 1860869
129 → 2146691
143 → 2924209
153 → 3581579
171 → 5000213
173 → 5177719
189 → 6751271</pre>
 
=={{header|PARI/GP}}==
<syntaxhighlight lang="parigp">for(N=1,200,if(isprime(N^3+2),print(N," ",N^3+2)))</syntaxhighlight>
{{out}}
<pre>
1 3
3 29
5 127
29 24391
45 91127
63 250049
65 274627
69 328511
71 357913
83 571789
105 1157627
113 1442899
123 1860869
129 2146691
143 2924209
153 3581579
171 5000213
173 5177719
189 6751271
</pre>
 
=={{header|Pascal}}==
==={{header|Free Pascal}}===
{{trans|Delphi}}
{{libheader| PrimTrial}}
<syntaxhighlight lang="pascal">
program Find_prime_numbers_of_the_form_n_n_n_plus_2;
{$IFDEF FPC}
{$MODE DELPHI} {$Optimization ON,ALL} {$COPERATORS ON}{$CODEALIGN proc=16}
{$ENDIF}
{$IFDEF WINDOWS}
{$APPTYPE CONSOLE}
{$ENDIF}
uses
PrimTrial;
type
myString = String[31];
 
function Numb2USA(n:Uint64):myString;
const
//extend s by the count of comma to be inserted
deltaLength : array[0..24] of byte =
(0,0,0,0,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7);
var
pI :pChar;
i,j : NativeInt;
Begin
str(n,result);
i := length(result);
//extend s by the count of comma to be inserted
// j := i+ (i-1) div 3;
j := i+deltaLength[i];
if i<> j then
Begin
setlength(result,j);
pI := @result[1];
dec(pI);
while i > 3 do
Begin
//copy 3 digits
pI[j] := pI[i];
pI[j-1] := pI[i-1];
pI[j-2] := pI[i-2];
// insert comma
pI[j-3] := ',';
dec(i,3);
dec(j,4);
end;
end;
end;
 
function n3_2(n:Uint32):Uint64;inline;
begin
n3_2 := UInt64(n)*n*n+2;
end;
 
const
limit =200;//trunc(exp(ln((HIGH(UInt32)-2))/3));
 
var
p : Uint64;
n : Uint32;
begin
n := 1;
repeat
p := n3_2(n);
if isPrime(p) then
writeln('n = ', Numb2USA(n):4, ' => n^3 + 2 = ', Numb2USA(p): 10);
inc(n,2);// n must be odd for n > 0
until n > Limit;
{$IFDEF WINDOWS}
readln;
{$IFEND}
end.</syntaxhighlight>
{{out}}
<pre>
n = 1 => n^3 + 2 = 3
n = 3 => n^3 + 2 = 29
n = 5 => n^3 + 2 = 127
n = 29 => n^3 + 2 = 24,391
n = 45 => n^3 + 2 = 91,127
n = 63 => n^3 + 2 = 250,049
n = 65 => n^3 + 2 = 274,627
n = 69 => n^3 + 2 = 328,511
n = 71 => n^3 + 2 = 357,913
n = 83 => n^3 + 2 = 571,789
n = 105 => n^3 + 2 = 1,157,627
n = 113 => n^3 + 2 = 1,442,899
n = 123 => n^3 + 2 = 1,860,869
n = 129 => n^3 + 2 = 2,146,691
n = 143 => n^3 + 2 = 2,924,209
n = 153 => n^3 + 2 = 3,581,579
n = 171 => n^3 + 2 = 5,000,213
n = 173 => n^3 + 2 = 5,177,719
n = 189 => n^3 + 2 = 6,751,271
</pre>
 
=={{header|Perl}}==
<langsyntaxhighlight lang="perl">use strict;
use warnings;
use feature 'say';
Line 279 ⟶ 1,354:
}
print "\n";
}</langsyntaxhighlight>
 
{{out}}
Line 298 ⟶ 1,373:
 
=={{header|Phix}}==
<!--<syntaxhighlight lang="phix">(phixonline)-->
<lang Phix>function pn3p2(integer n)
<span style="color: #008080;">function</span> <span style="color: #000000;">pn3p2</span><span style="color: #0000FF;">(</span><span style="color: #004080;">integer</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">)</span>
integer n3p2 = power(n,3)+2
<span style="color: #004080;">integer</span> <span style="color: #000000;">n3p2</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">power</span><span style="color: #0000FF;">(</span><span style="color: #000000;">n</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">)+</span><span style="color: #000000;">2</span>
return iff(is_prime(n3p2)?{n,n3p2}:0)
<span style="color: #008080;">return</span> <span style="color: #008080;">iff</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">is_prime</span><span style="color: #0000FF;">(</span><span style="color: #000000;">n3p2</span><span style="color: #0000FF;">)?{</span><span style="color: #000000;">n</span><span style="color: #0000FF;">,</span><span style="color: #000000;">n3p2</span><span style="color: #0000FF;">}:</span><span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
end function
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
sequence res = filter(apply(tagset(199,1,2),pn3p2),"!=",0)
<span style="color: #004080;">sequence</span> <span style="color: #000000;">res</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">filter</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">apply</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">tagset</span><span style="color: #0000FF;">(</span><span style="color: #000000;">199</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF;">),</span><span style="color: #000000;">pn3p2</span><span style="color: #0000FF;">),</span><span style="color: #008000;">"!="</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
printf(1,"Found %d primes of the form n^3+2:\n",length(res))
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Found %d primes of the form n^3+2:\n"</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">res</span><span style="color: #0000FF;">))</span>
papply(true,printf,{1,{"n = %3d => n^3+2 = %,9d\n"},res})</lang>
<span style="color: #7060A8;">papply</span><span style="color: #0000FF;">(</span><span style="color: #004600;">true</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">printf</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,{</span><span style="color: #008000;">"n = %3d =&gt; n^3+2 = %,9d\n"</span><span style="color: #0000FF;">},</span><span style="color: #000000;">res</span><span style="color: #0000FF;">})</span>
<!--</syntaxhighlight>-->
{{out}}
<pre>
Line 327 ⟶ 1,404:
n = 173 => n^3+2 = 5,177,719
n = 189 => n^3+2 = 6,751,271
</pre>
 
=={{header|Plain English}}==
<syntaxhighlight lang="plainenglish">To run:
Start up.
Put 1 into a counter.
Loop.
Put the counter into a number.
Raise the number to 3.
Add 2 to the number.
If the number is prime, write the counter then " " then the number on the console.
Add 2 to the counter.
If the counter is greater than 200, break.
Repeat.
Write "Done." on the console.
Wait for the escape key.
Shut down.</syntaxhighlight>
{{out}}
<pre>
1 3
3 29
5 127
29 24391
45 91127
63 250049
65 274627
69 328511
71 357913
83 571789
105 1157627
113 1442899
123 1860869
129 2146691
143 2924209
153 3581579
171 5000213
173 5177719
189 6751271
Done.
</pre>
 
 
=={{header|Python}}==
<syntaxhighlight lang="python">#!/usr/bin/python
 
def isPrime(n):
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
 
if __name__ == '__main__':
for n in range(1, 200):
if isPrime(n**3+2):
print(f'{n}\t{n**3+2}');</syntaxhighlight>
{{out}}
<pre>1 3
3 29
5 127
29 24391
45 91127
63 250049
65 274627
69 328511
71 357913
83 571789
105 1157627
113 1442899
123 1860869
129 2146691
143 2924209
153 3581579
171 5000213
173 5177719
189 6751271</pre>
 
=={{header|Quackery}}==
 
<code>prime</code> is defined at [[Miller–Rabin primality test#Quackery]].
 
<syntaxhighlight lang="Quackery"> [ dip number$
over size -
space swap of
swap join echo$ ] is recho ( n n --> )
 
199 times
[ i^ 1+ 3 ** 2 +
dup prime iff
[ i^ 1+ 4 recho
sp 7 recho cr ]
else drop ]</syntaxhighlight>
 
{{out}}
 
<pre> 1 3
3 29
5 127
29 24391
45 91127
63 250049
65 274627
69 328511
71 357913
83 571789
105 1157627
113 1442899
123 1860869
129 2146691
143 2924209
153 3581579
171 5000213
173 5177719
189 6751271
</pre>
 
=={{header|Raku}}==
<syntaxhighlight lang="raku" perl6line># 20210315 Raku programming solution
 
say ((1…199)»³ »+»2).grep: *.is-prime</langsyntaxhighlight>
{{out}}
<pre>
Line 347 ⟶ 1,537:
Since the task's requirements are pretty straight-forward and easy, &nbsp; a little extra code was added for presentation
<br>(title and title separator line, &nbsp; the count of primes found, &nbsp; and commatization of the numbers).
<langsyntaxhighlight lang="rexx">/*REXX program finds and displays n primes of the form: n**3 + 2. */
parse arg LO HI hp . /*obtain optional argument from the CL.*/
if LO=='' | LO=="," then LO= 0 /*Not specified? Then use the default.*/
Line 394 ⟶ 1,584:
end /*k*/ /* [↑] only process numbers ≤ √ J */
#= #+1; @.#= j; s.#= j*j; !.j= 1 /*bump # of Ps; assign next P; P²; P# */
end /*j*/; return</langsyntaxhighlight>
{{out|output|text=&nbsp; when using the default inputs:}}
<pre>
Line 424 ⟶ 1,614:
 
=={{header|Ring}}==
<langsyntaxhighlight lang="ring">
load "stdlib.ring"
 
Line 437 ⟶ 1,627:
 
see "done..." + nl
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 462 ⟶ 1,652:
done...
 
</pre>
 
=={{header|RPL}}==
{{works with|HP|49g}}
≪ { }
1 200 '''FOR''' n
n 3 ^ 2 +
'''IF''' DUP ISPRIME? '''THEN''' + '''ELSE''' DROP '''END'''
'''NEXT'''
≫ '<span style="color:blue">TASK</span>' STO
{{out}}
<pre>
1: {3 29 127 24391 91127 250049 274627 328511 357913 571789 1157627 1442899 1860869 2146691 2924209 3581579 5000213 5177719 6751271}
</pre>
 
=={{header|Ruby}}==
<syntaxhighlight lang="ruby">require 'prime'
p (1..200).filter_map{|n| cand = n**3 + 2; cand if cand.prime? }
</syntaxhighlight>
{{out}}
<pre>[3, 29, 127, 24391, 91127, 250049, 274627, 328511, 357913, 571789, 1157627, 1442899, 1860869, 2146691, 2924209, 3581579, 5000213, 5177719, 6751271]</pre>
 
=={{header|Rust}}==
<syntaxhighlight lang="rust">// 202100327 Rust programming solution
 
use primes::is_prime;
 
fn main() {
 
let mut count = 0;
let begin = 0;
let end = 200;
 
println!("Find prime numbers of the form");
println!(" n => n³ + 2 ");
 
for n in begin+1..end-1 {
let m = n*n*n+2;
if is_prime(m) {
println!("{:4} => {}", n, m);
count += 1;
}
}
 
println!("Found {} such prime numbers where {} < n < {}.", count,begin,end);
}</syntaxhighlight>
{{out}}
<pre>
Find prime numbers of the form
n => n³ + 2
1 => 3
3 => 29
5 => 127
29 => 24391
45 => 91127
63 => 250049
65 => 274627
69 => 328511
71 => 357913
83 => 571789
105 => 1157627
113 => 1442899
123 => 1860869
129 => 2146691
143 => 2924209
153 => 3581579
171 => 5000213
173 => 5177719
189 => 6751271
Found 19 such prime numbers where 0 < n < 200.
</pre>
 
=={{header|Seed7}}==
Credit for <code>isPrime</code> function: [http://seed7.sourceforge.net/algorith/math.htm#isPrime]
<syntaxhighlight lang="seed7">$ include "seed7_05.s7i";
 
const func boolean: isPrime (in integer: number) is func
result
var boolean: prime is FALSE;
local
var integer: upTo is 0;
var integer: testNum is 3;
begin
if number = 2 then
prime := TRUE;
elsif odd(number) and number > 2 then
upTo := sqrt(number);
while number rem testNum <> 0 and testNum <= upTo do
testNum +:= 2;
end while;
prime := testNum > upTo;
end if;
end func;
 
const proc: main is func
local
const integer: limit is 199;
var integer: n is 1;
var integer: p is 0;
begin
writeln(" n n**3+2");
writeln("------------");
for n range 1 to limit step 2 do
p := n ** 3 + 2;
if isPrime(p) then
writeln(n lpad 3 <& p lpad 9);
end if;
end for;
end func;</syntaxhighlight>
{{out}}
<pre>
n n**3+2
------------
1 3
3 29
5 127
29 24391
45 91127
63 250049
65 274627
69 328511
71 357913
83 571789
105 1157627
113 1442899
123 1860869
129 2146691
143 2924209
153 3581579
171 5000213
173 5177719
189 6751271
</pre>
 
=={{header|Sidef}}==
<syntaxhighlight lang="ruby">1..^200 -> map { _**3 + 2 }.grep {.is_prime}.say</syntaxhighlight>
{{out}}
<pre>
[3, 29, 127, 24391, 91127, 250049, 274627, 328511, 357913, 571789, 1157627, 1442899, 1860869, 2146691, 2924209, 3581579, 5000213, 5177719, 6751271]
</pre>
 
=={{header|Swift}}==
<syntaxhighlight lang="swift">import Foundation
 
func isPrime(_ n: Int) -> Bool {
if n < 2 {
return false
}
if n % 2 == 0 {
return n == 2
}
if n % 3 == 0 {
return n == 3
}
var p = 5
while p * p <= n {
if n % p == 0 {
return false
}
p += 2
if n % p == 0 {
return false
}
p += 4
}
return true
}
 
for n in 1...200 {
let p = n * n * n + 2
if isPrime(p) {
print(String(format: "%3d%9d", n, p))
}
}</syntaxhighlight>
 
{{out}}
<pre>
1 3
3 29
5 127
29 24391
45 91127
63 250049
65 274627
69 328511
71 357913
83 571789
105 1157627
113 1442899
123 1860869
129 2146691
143 2924209
153 3581579
171 5000213
173 5177719
189 6751271
</pre>
 
=={{header|Wren}}==
{{libheader|Wren-math}}
{{libheader|Wren-traititerate}}
{{libheader|Wren-fmt}}
If ''n'' is even then ''n³ + 2'' is also even, so we only need to examine odd values of ''n'' here.
<langsyntaxhighlight ecmascriptlang="wren">import "./math" for Int
import "./traititerate" for Stepped
import "./fmt" for Fmt
 
var limit = 200
Line 477 ⟶ 1,863:
var p = n*n*n + 2
if (Int.isPrime(p)) Fmt.print("n = $3d => n³ + 2 = $,9d", n, p)
}</langsyntaxhighlight>
 
{{out}}
Line 500 ⟶ 1,886:
n = 173 => n³ + 2 = 5,177,719
n = 189 => n³ + 2 = 6,751,271
</pre>
 
=={{header|XPL0}}==
<syntaxhighlight lang="xpl0">func IsPrime(N); \Return 'true' if N is a prime number
int N, I;
[if N <= 1 then return false;
for I:= 2 to sqrt(N) do
if rem(N/I) = 0 then return false;
return true;
];
 
int N;
[for N:= 1 to 199 do
[if IsPrime(N*N*N+2) then
[IntOut(0, N);
ChOut(0, 9\tab\);
IntOut(0, N*N*N+2);
CrLf(0);
]
];
]</syntaxhighlight>
 
{{out}}
<pre>
1 3
3 29
5 127
29 24391
45 91127
63 250049
65 274627
69 328511
71 357913
83 571789
105 1157627
113 1442899
123 1860869
129 2146691
143 2924209
153 3581579
171 5000213
173 5177719
189 6751271
</pre>
1,978

edits