Jump to content

Truncatable primes: Difference between revisions

added OpenEdge solution
(→‎{{header|C}}: replace code: number method; non-portable function; speed)
(added OpenEdge solution)
Line 756:
print( "max_prime_left = ", max_prime_left )
print( "max_prime_right = ", max_prime_right )</lang>
 
=={{header|OpenEdge/Progress}}==
<lang progress>FUNCTION isPrime RETURNS LOGICAL (
i_i AS INT
):
 
DEF VAR ii AS INT.
 
DO ii = 2 TO SQRT( i_i ):
 
IF i_i MODULO ii = 0 THEN
RETURN FALSE.
 
END.
 
RETURN TRUE AND i_i > 1.
 
END FUNCTION. /* isPrime */
 
FUNCTION isLeftTruncatablePrime RETURNS LOGICAL (
i_i AS INT
):
 
DEF VAR ii AS INT.
DEF VAR cc AS CHAR.
DEF VAR lresult AS LOGICAL INITIAL TRUE.
cc = STRING( i_i ).
 
DO WHILE cc > "":
lresult = lresult AND isPrime( INTEGER( cc ) ).
cc = SUBSTRING( cc, 2 ).
END.
 
RETURN lresult.
 
END FUNCTION. /* isLeftTruncatablePrime */
 
FUNCTION isRightTruncatablePrime RETURNS LOGICAL (
i_i AS INT
):
 
DEF VAR ii AS INT.
DEF VAR cc AS CHAR.
DEF VAR lresult AS LOGICAL INITIAL TRUE.
cc = STRING( i_i ).
 
DO WHILE cc > "":
lresult = lresult AND isPrime( INTEGER( cc ) ).
cc = SUBSTRING( cc, 1, LENGTH( cc ) - 1 ).
END.
 
RETURN lresult.
 
END FUNCTION. /* isRightTruncatablePrime */
 
FUNCTION getHighestTruncatablePrimes RETURNS CHARACTER (
i_imax AS INTEGER
):
 
DEF VAR ii AS INT.
DEF VAR ileft AS INT.
DEF VAR iright AS INT.
 
DO ii = i_imax TO 1 BY -1 WHILE ileft = 0 OR iright = 0:
 
IF INDEX( STRING( ii ), "0" ) = 0 THEN DO:
IF ileft = 0 AND isLeftTruncatablePrime( ii ) THEN
ileft = ii.
IF iright = 0 AND isRightTruncatablePrime( ii ) THEN
iright = ii.
END.
 
END.
 
RETURN SUBSTITUTE("Left: &1~nRight: &2", ileft, iright ).
 
END FUNCTION. /* getHighestTruncatablePrimes */
 
MESSAGE
getHighestTruncatablePrimes( 1000000 )
VIEW-AS ALERT-BOX.
</lang>
Output:
<pre>---------------------------
Message
---------------------------
Left: 998443
Right: 739399
---------------------------
OK
---------------------------</pre>
 
=={{header|PARI/GP}}==
73

edits

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