|
|
Line 5: |
Line 5: |
|
Primes (in base ten) in which all substrings are also primes, where '''n < 500''' |
|
Primes (in base ten) in which all substrings are also primes, where '''n < 500''' |
|
<br><br> |
|
<br><br> |
|
|
|
|
⚫ |
|
|
⚫ |
<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: |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
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 |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
# find the primes of interest # |
|
⚫ |
|
|
⚫ |
[]BOOL prime = sieve( max number ); |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
BOOL is substring := TRUE; |
|
⚫ |
WHILE is substring AND d <= max number DO |
|
⚫ |
|
|
⚫ |
WHILE is substring AND n > 0 DO |
|
⚫ |
INT sub digits = n MOD d; |
|
⚫ |
is substring := IF sub digits = 0 THEN FALSE ELSE prime[ sub digits ] FI; |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
IF is substring THEN print( ( " ", whole( p, 0 ) ) ) FI |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
|
|
|
|
=={{header|C++}}== |
|
=={{header|C++}}== |
Line 64: |
Line 103: |
|
73 |
|
73 |
|
373 |
|
373 |
⚫ |
|
|
|
|
|
⚫ |
|
|
⚫ |
<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: |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
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 |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
# find the primes of interest # |
|
⚫ |
|
|
⚫ |
[]BOOL prime = sieve( max number ); |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
BOOL is substring := TRUE; |
|
⚫ |
WHILE is substring AND d <= max number DO |
|
⚫ |
|
|
⚫ |
WHILE is substring AND n > 0 DO |
|
⚫ |
INT sub digits = n MOD d; |
|
⚫ |
is substring := IF sub digits = 0 THEN FALSE ELSE prime[ sub digits ] FI; |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
IF is substring THEN print( ( " ", whole( p, 0 ) ) ) FI |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
|
</pre> |
|
</pre> |
|
|
|
|