all tasks
This commit is contained in:
parent
b83f433714
commit
68f8f3e56b
14735 changed files with 178959 additions and 0 deletions
|
|
@ -0,0 +1,68 @@
|
|||
#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)
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
maxprime = 1000000
|
||||
|
||||
def primes(n):
|
||||
multiples = set()
|
||||
prime = []
|
||||
for i in range(2, n+1):
|
||||
if i not in multiples:
|
||||
prime.append(i)
|
||||
multiples.update(set(range(i*i, n+1, i)))
|
||||
return prime
|
||||
|
||||
def truncatableprime(n):
|
||||
'Return a longest left and right truncatable primes below n'
|
||||
primelist = [str(x) for x in primes(n)[::-1]]
|
||||
primeset = set(primelist)
|
||||
for n in primelist:
|
||||
# n = 'abc'; [n[i:] for i in range(len(n))] -> ['abc', 'bc', 'c']
|
||||
alltruncs = set(n[i:] for i in range(len(n)))
|
||||
if alltruncs.issubset(primeset):
|
||||
truncateleft = int(n)
|
||||
break
|
||||
for n in primelist:
|
||||
# n = 'abc'; [n[:i+1] for i in range(len(n))] -> ['a', 'ab', 'abc']
|
||||
alltruncs = set([n[:i+1] for i in range(len(n))])
|
||||
if alltruncs.issubset(primeset):
|
||||
truncateright = int(n)
|
||||
break
|
||||
return truncateleft, truncateright
|
||||
|
||||
print(truncatableprime(maxprime))
|
||||
Loading…
Add table
Add a link
Reference in a new issue