274 Stellen
4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111
Das Auffinden dauerte ungefähr 20 Stunden CPU-Zeit und ungefähr 2 Minuten pro Prime, um es zu beweisen. Im Gegensatz dazu ist die 84-stellige Lösung in ca. 3 Minuten zu finden.
84 Stellen
444444444444444444444444444444444444444444444444441111111113333333333333333333333333
77777777999999999999999777777777 (32 Stellen)
66666666666666622222222222222333 (32 Stellen)
647777777777777777777777777 (27 Stellen)
44444441333333333333 (20 Stellen)
999996677777777777 (18 Stellen)
167777777777777 (15 Stellen)
Ich empfehle dieses Tool, wenn Sie die Ursprünglichkeit bestätigen möchten: D. Alperns ECM-Applet
Verwenden Sie auch einen Repdigit-Ansatz, der am wahrscheinlichsten große Werte zu finden scheint. Das folgende Skript überspringt algorithmisch die meisten Zahlen oder Kürzungen, was ein Vielfaches von 2, 3, 5 und jetzt 11 c / o PeterTaylor ergibt (sein Beitrag erhöhte die Effizienz um ungefähr 50%).
from my_math import is_prime
sets = [
(set('147'), set('0147369'), set('1379')),
(set('369'), set('147'), set('1379')),
(set('369'), set('0369'), set('17')),
(set('258'), set('0258369'), set('39')),
(set('369'), set('258'), set('39'))]
div2or5 = set('024568')
for n in range(3, 100):
for sa, sb, sc in sets:
for a in sa:
for b in sb-set([a]):
bm1 = int(b in div2or5)
for c in sc-set([b]):
if int(a+b+c)%11 == 0: continue
for na in xrange(1, n-1, 1+(n&1)):
eb = n - na
for nb in xrange(1, eb-bm1, 1+(~eb&1)):
nc = eb - nb
if not is_prime(long(a*(na-1) + b*nb + c*nc)):
continue
if not is_prime(long(a*na + b*(nb-1) + c*nc)):
continue
if not is_prime(long(a*na + b*nb + c*(nc-1))):
continue
if not is_prime(long(a*na + b*nb + c*nc)):
continue
print a*na + b*nb + c*nc
my_math.py
finden Sie hier: http://codepad.org/KtXsydxK
Alternativ können Sie auch die gmpy.is_prime
Funktion: GMPY Project verwenden
Einige kleine Geschwindigkeitsverbesserungen als Ergebnis der Profilerstellung. Die Primalitätsprüfung für den längsten der vier Kandidaten wurde an das Ende verschoben, xrange
ersetzt range
und long
ersetzt int
Typumwandlungen.int
scheint unnötigen Overhead zu haben, wenn der ausgewertete Ausdruck zu a führt long
.
Teilbarkeitsregeln
Sei N eine postitive ganze Zahl der Form a ... ab ... bc ... c , wobei a , b und c sich wiederholende Ziffern sind.
Durch 2 und 5
- Um die Teilbarkeit durch 2 und 5 zu vermeiden , darf c nicht in der Menge [0, 2, 4, 5, 6, 8] enthalten sein . Wenn b ein Mitglied dieser Menge ist, darf die Länge von c nicht kleiner als 2 sein.
Mit 3
- Wenn N = 1 (mod 3) , dann darf N keines von [1, 4, 7] enthalten , da das Entfernen eines dieser Elemente trivial zu einem Vielfachen von 3 führen würde . Ebenso für N = 2 (mod 3) und [2, 5, 8] . Diese Implementierung verwendet eine leicht abgeschwächte Form davon: Wenn N eines von [1, 4, 7] enthält , darf es keines von [2, 5, 8] enthalten und umgekehrt. Außerdem darf N nicht nur aus [0, 3, 6, 9] bestehen . Dies ist größtenteils eine äquivalente Aussage, lässt jedoch einige triviale Fälle zu, z. B. a , b und cjedes wird ein Vielfaches von 3 Mal wiederholt .
Mit 11
- Wie PeterTaylor feststellt, ist N , wenn es die Form aabbcc ... xxyyzz hat , das heißt, es besteht nur aus Ziffern, die eine gerade Anzahl von Malen wiederholt werden, trivial durch 11 teilbar : a0b0c ... x0y0z . Diese Beobachtung beseitigt die Hälfte des Suchraums. Wenn N ungerade lang ist, muss auch die Länge von a , b und c ungerade sein (75% Reduzierung des Suchraums), und wenn N gerade lang ist, darf nur eine von a , b oder c gerade sein in der Länge (25% weniger Suchraum).
- Vermutung: Wenn abc ein Vielfaches von 11 ist , zum Beispiel 407 , dann sind alle ungeraden Wiederholungen von a , b und c auch Vielfache von 11 . Dies fällt aus dem Rahmen der obigen Teilbarkeit durch 11 - Regel; in der Tat sind nur ungerade Wiederholungen unter denen, die ausdrücklich erlaubt sind. Ich habe keinen Beweis dafür, aber systematische Tests konnten kein Gegenbeispiel finden. Vergleichen Sie: 444077777 , 44444000777 , 44444440000077777777777 usw. Jeder kann diese Vermutung beweisen oder widerlegen. aditsu hat inzwischen bewiesen, dass dies korrekt ist.
Andere Formen
2 Sätze wiederholter Ziffern
Zahlen der Form, die Randomra verfolgte, a ... ab ... b , scheinen viel seltener zu sein. Es gibt nur 7 Lösungen mit weniger als 10 1700 Stellen, von denen die größte 12 Stellen lang ist.
4 Sätze wiederholter Ziffern
Zahlen dieser Form, a ... ab ... bc ... cd ... d , scheinen dichter verteilt zu sein als die, nach denen ich gesucht habe. Es gibt 69 Lösungen mit weniger als 10 100 , verglichen mit den 32 Lösungen mit 3 Sätzen wiederholter Ziffern. Diese zwischen 10 11 und 10 100 sind wie folgt:
190000007777
700000011119
955666663333
47444444441111
66666622222399
280000000033333
1111333333334999
1111333333377779
1199999999900111
3355555666999999
2222233333000099
55555922222222233333
444444440004449999999
3366666633333333377777
3333333333999888883333
4441111113333333333311111
2222222293333333333333999999
999999999339999999977777777777
22222226666666222222222299999999
333333333333333333339944444444444999999999
559999999999933333333333339999999999999999
3333333333333333333111111111111666666666611111
11111111333330000000000000111111111111111111111
777777777770000000000000000000033333339999999999999999999999999
3333333333333333333333333333333333333333333333336666666977777777777777
666666666666666666611111113333337777777777777777777777777777777777777777
3333333333333333333888889999999999999999999999999999999999999999999999999933333333
Es gibt ein einfaches heuristisches Argument, warum dies der Fall sein sollte. Für jede digitale Länge gibt es eine Anzahl von Wiederholungssätzen (dh 3 Wiederholungssätze oder 4 Wiederholungssätze usw.), für die die erwartete Anzahl von Lösungen die höchste ist. Der Übergang erfolgt, wenn die Anzahl der zusätzlichen Lösungsmöglichkeiten, die als Verhältnis herangezogen werden, die Wahrscheinlichkeit überwiegt, dass es sich bei der zu überprüfenden zusätzlichen Zahl um eine Primzahl handelt. Angesichts der exponentiellen Natur der Überprüfungsmöglichkeiten und der logarithmischen Natur der Primzahlenverteilung geschieht dies relativ schnell.
Wenn wir zum Beispiel eine 300-stellige Lösung finden möchten, ist es weitaus wahrscheinlicher, dass eine Überprüfung von 4 Sätzen mit wiederholten Ziffern eine Lösung ergibt als von 3 Sätzen, und es ist immer noch wahrscheinlicher, dass 5 Sätze vorhanden sind. Mit der mir zur Verfügung stehenden Rechenleistung würde die Suche nach einer Lösung, die viel größer als 100 Stellen mit 4 Sätzen ist, meine Kapazität sprengen, geschweige denn 5 oder 6.
9901444133
(eine Streichung von eins 9) ist nicht prime (7 x 1414492019
). Ihr vorheriges Beispiel war jedoch richtig.