69 lines
1.3 KiB
Plaintext
69 lines
1.3 KiB
Plaintext
#MaxLim = 999999
|
|
|
|
Procedure is_Prime(n)
|
|
If n<=1 : ProcedureReturn #False
|
|
ElseIf n<4 : ProcedureReturn #True
|
|
ElseIf n%2=0: ProcedureReturn #False
|
|
ElseIf n<9 : ProcedureReturn #True
|
|
ElseIf n%3=0: ProcedureReturn #False
|
|
Else
|
|
Protected r=Round(Sqr(n),#PB_Round_Down)
|
|
Protected f=5
|
|
While f<=r
|
|
If n%f=0 Or n%(f+2)=0
|
|
ProcedureReturn #False
|
|
EndIf
|
|
f+6
|
|
Wend
|
|
EndIf
|
|
ProcedureReturn #True
|
|
EndProcedure
|
|
|
|
Procedure TruncateLeft(n)
|
|
Protected s.s=Str(n), l=Len(s)-1
|
|
If Not FindString(s,"0",1)
|
|
While l>0
|
|
s=Right(s,l)
|
|
If Not is_Prime(Val(s))
|
|
ProcedureReturn #False
|
|
EndIf
|
|
l-1
|
|
Wend
|
|
ProcedureReturn #True
|
|
EndIf
|
|
EndProcedure
|
|
|
|
Procedure TruncateRight(a)
|
|
Repeat
|
|
a/10
|
|
If Not a
|
|
Break
|
|
ElseIf Not is_Prime(a) Or a%10=0
|
|
ProcedureReturn #False
|
|
EndIf
|
|
ForEver
|
|
ProcedureReturn #True
|
|
EndProcedure
|
|
|
|
i=#MaxLim
|
|
Repeat
|
|
If is_Prime(i)
|
|
If Not truncateleft And TruncateLeft(i)
|
|
truncateleft=i
|
|
EndIf
|
|
If Not truncateright And TruncateRight(i)
|
|
truncateright=i
|
|
EndIf
|
|
EndIf
|
|
If truncateleft And truncateright
|
|
Break
|
|
Else
|
|
i-2
|
|
EndIf
|
|
Until i<=0
|
|
|
|
x.s="Largest TruncateLeft= "+Str(truncateleft)
|
|
y.s="Largest TruncateRight= "+Str(truncateright)
|
|
|
|
MessageRequester("Truncatable primes",x+#CRLF$+y)
|