Substring primes: Difference between revisions
Content added Content deleted
m (→Using a limit: Replaced getDigits function with a more recently added library function.) |
(→{{header|ALGOL 68}}: Use ALGOL 68-primes) |
||
Line 13: | Line 13: | ||
=={{header|ALGOL 68}}== |
=={{header|ALGOL 68}}== |
||
{{libheader|ALGOL 68-primes}} |
|||
<lang algol68>BEGIN # find primes where all substrings of the digits are prime # |
<lang algol68>BEGIN # find primes where all substrings of the digits are prime # |
||
# reurns a sieve of primes up to n # |
|||
PROC sieve = ( INT n )[]BOOL: |
|||
BEGIN |
|||
[ 1 : n ]BOOL p; |
|||
p[ 1 ] := FALSE; p[ 2 ] := TRUE; |
|||
FOR i FROM 3 BY 2 TO n DO p[ i ] := TRUE OD; |
|||
FOR i FROM 4 BY 2 TO n DO p[ i ] := FALSE OD; |
|||
FOR i FROM 3 BY 2 TO ENTIER sqrt( n ) DO |
|||
IF p[ i ] THEN FOR s FROM i * i BY i + i TO n DO p[ s ] := FALSE OD FI |
|||
OD; |
|||
p |
|||
END # prime list # ; |
|||
# find the primes of interest # |
# find the primes of interest # |
||
PR read "primes.incl.a68" PR |
|||
INT max number = 500; |
|||
[]BOOL prime = |
[]BOOL prime = PRIMESIEVE 500; |
||
FOR p TO UPB prime DO |
FOR p TO UPB prime DO |
||
IF prime[ p ] THEN |
IF prime[ p ] THEN |
||
INT d := 10; |
INT d := 10; |
||
BOOL is substring := TRUE; |
BOOL is substring := TRUE; |
||
WHILE is substring AND d <= |
WHILE is substring AND d <= UPB prime DO |
||
INT n := p; |
INT n := p; |
||
WHILE is substring AND n > 0 DO |
WHILE is substring AND n > 0 DO |