Jump to content

Extreme primes: Difference between revisions

Added Algol 68
(Added Algol 68)
Line 15:
[[oeis:A013918|OEIS sequence A013918]]
<br><br>
 
=={{header|ALGOL 68}}==
{{libheader|ALGOL 68-primes}}
<syntaxhighlight lang="algol68">
BEGIN # sum the primes below n and report the sums that are prime #
PR read "primes.incl.a68" PR # include prime utilities #
[]BOOL prime = PRIMESIEVE 2 000 000; # sieve the primes to 2 000 000 #
# returns TRUE if n is prime, FALSE otherwise #
PROC is prime = ( LONG INT n )BOOL:
IF n <= UPB prime THEN prime[ SHORTEN n ]
ELIF NOT ODD n THEN FALSE
ELSE
LONG INT f := 3;
LONG INT f2 := 9;
LONG INT to next := 16;
BOOL is a prime := TRUE;
WHILE f2 <= n AND is a prime DO
is a prime := n MOD f /= 0;
f +:= 2;
f2 +:= to next;
to next +:= 8
OD;
is a prime
FI # is prime # ;
# sum the primes and test the sums #
print( ( "The first 30 extreme primes:", newline ) );
print( ( whole( 2, -6 ), " " ) ); # 2 is the first prime so is "extreme" #
LONG INT prime sum := 2;
INT prime sum count := 1;
LONG INT last prime := 0;
FOR i FROM 3 BY 2 TO UPB prime WHILE prime sum count < 30 DO
IF is prime( i ) THEN
prime sum +:= i; # have another prime #
last prime := i;
IF is prime( prime sum ) THEN # the prime sum is also prime #
print( ( whole( prime sum, -6 )
, IF ( prime sum count +:= 1 ) MOD 10 = 0 THEN newline ELSE " " FI
)
)
FI
FI
OD;
print( ( newline ) );
LONG INT candidate := last prime;
WHILE prime sum count < 5 000 DO
IF is prime( candidate +:= 1 ) THEN
prime sum +:= candidate; # have another prime #
IF is prime( prime sum ) THEN # the prime sum is also prime #
IF ( prime sum count +:= 1 ) MOD 1000 = 0 THEN
print( ( "Extreme prime ", whole( prime sum count, -5 )
, " is ", whole( candidate, -12 )
, ", sum: ", whole( prime sum, -18 )
, newline
)
)
FI
FI
FI
OD
END
</syntaxhighlight>
{{out}}
<pre>
The first 30 extreme primes:
2 5 17 41 197 281 7699 8893 22039 24133
25237 28697 32353 37561 38921 43201 44683 55837 61027 66463
70241 86453 102001 109147 116533 119069 121631 129419 132059 263171
Extreme prime 1000 is 196831, sum: 1657620079
Extreme prime 2000 is 495571, sum: 9744982591
Extreme prime 3000 is 808837, sum: 24984473177
Extreme prime 4000 is 1152763, sum: 49394034691
Extreme prime 5000 is 1500973, sum: 82195983953
</pre>
 
=={{header|FreeBASIC}}==
3,044

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.