Jump to content

Quadrat special primes: Difference between revisions

Added Algol W
No edit summary
(Added Algol W)
Line 6:
where     '''n'''   <   '''16000'''.
<br><br>
 
=={{header|ALGOL W}}==
<lang algolw>begin % find some primes where the gap between the current prime and the next is a square %
% sets p( 1 :: n ) to a sieve of primes up to n %
procedure Eratosthenes ( logical array p( * ) ; integer value n ) ;
begin
p( 1 ) := false; p( 2 ) := true;
for i := 3 step 2 until n do p( i ) := true;
for i := 4 step 2 until n do p( i ) := false;
for i := 3 step 2 until truncate( sqrt( n ) ) do begin
integer ii; ii := i + i;
if p( i ) then for pr := i * i step ii until n do p( pr ) := false
end for_i ;
end Eratosthenes ;
% sets s( 1 :: n ) to the squares %
procedure getSquares ( integer array s ( * ) ; integer value n ) ;
for i := 1 until n do s( i ) := i * i;
integer MAX_NUMBER;
MAX_NUMBER := 16000;
begin
logical array prime( 1 :: MAX_NUMBER );
integer array square( 1 :: MAX_NUMBER );
integer pCount, thisPrime, nextPrime;
% sieve the primes to MAX_NUMBER %
Eratosthenes( prime, MAX_NUMBER );
% calculate the squares to MAX_NUMBER %
getSquares( square, MAX_NUMBER );
% the first gap is 1 (between 2 and 3) the gap between all other primes is even %
% so we treat 2-3 as a special case %
pCount := 1; thisPrime := 2; nextPrime := 3;
write( i_w := 6, s_w := 0, " ", thisPrime );
while nextPrime < MAX_NUMBER do begin
integer sqPos;
thisPrime := nextPrime;
pCount := pCount + 1;
writeon( i_w := 6, s_w := 0, " ", thisPrime );
if pCount rem 12 = 0 then write();
sqPos := 2;
while begin
integer pGap;
pGap := square( sqPos );
nextPrime := thisPrime + pGap;
nextPrime < MAX_NUMBER and not prime( nextPrime )
end do sqPos := sqPos + 2;
end while_thisPrime_lt_MAX_NUMBER
end
end.</lang>
{{out}}
<pre>
2 3 7 11 47 83 227 263 587 911 947 983
1019 1163 1307 1451 1487 1523 1559 2459 3359 4259 4583 5483
5519 5843 5879 6203 6779 7103 7247 7283 7607 7643 8219 8363
10667 11243 11279 11423 12323 12647 12791 13367 13691 14591 14627 14771
15671
</pre>
 
=={{header|Raku}}==
3,043

edits

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