274 angka
4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111
Ini membutuhkan sekitar 20 jam waktu CPU untuk menemukannya, dan sekitar 2 menit per prime untuk membuktikannya. Sebaliknya, solusi 84 digit dapat ditemukan dalam waktu sekitar 3 menit.
84 digit
444444444444444444444444444444444444444444444444441111111113333333333333333333333333
77777777999999999999999777777777 (32 digit)
66666666666666622222222222222333 (32 digit)
647777777777777777777777777 (27 digit)
44444441333333333333 (20 digit)
999996677777777777 (18 digit)
167777777777777 (15 digit)
Saya merekomendasikan alat ini jika Anda ingin mengkonfirmasi keaslian: D. Applet ECM Alpern
Juga menggunakan pendekatan repdigit, yang tampaknya merupakan pendekatan yang paling mungkin untuk menemukan nilai besar. Skrip berikut secara algoritmik melompati sebagian besar angka atau pemotongan yang akan menghasilkan kelipatan 2, 3, 5 dan sekarang 11 c / o PeterTaylor (kontribusinya meningkatkan efisiensi sekitar 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
dapat ditemukan di sini: http://codepad.org/KtXsydxK
Atau, Anda juga dapat menggunakan gmpy.is_prime
fungsi: Proyek GMPY
Beberapa peningkatan kecepatan kecil sebagai akibat dari profil. Pemeriksaan primality untuk kandidat terpanjang dari empat kandidat telah dipindahkan ke akhir, xrange
menggantikan range
, danlong
mengganti int
pemain tipe. int
tampaknya memiliki overhead yang tidak perlu jika ekspresi yang dievaluasi menghasilkan a long
.
Aturan dapat dibagi
Biarkan N menjadi bilangan bulat positif dari bentuk a ... ab ... bc ... c , di mana a , b dan c adalah digit berulang.
Dengan 2 dan 5
- Untuk menghindari keterbagian 2 dan 5 , c mungkin tidak ada dalam set [0, 2, 4, 5, 6, 8] . Selain itu, jika b adalah anggota dari set ini, panjang c mungkin tidak kurang dari 2.
Dengan 3
- Jika N = 1 (mod 3) , maka N mungkin tidak mengandung salah satu [1, 4, 7] , karena menghapus salah satu dari ini akan menghasilkan kelipatan 3 . Demikian juga untuk N = 2 (mod 3) dan [2, 5, 8] . Implementasi ini menggunakan bentuk yang sedikit melemah ini: jika N berisi salah satu [1, 4, 7] , itu mungkin tidak mengandung [2, 5, 8] , dan sebaliknya. Selain itu, N tidak boleh hanya terdiri dari [0, 3, 6, 9] . Ini sebagian besar merupakan pernyataan yang setara, tetapi memang memungkinkan untuk beberapa kasus sepele, misalnya a , b , dan cmasing-masing diulang 3 kali.
By 11
- Seperti yang dicatat PeterTaylor , jika N adalah dari bentuk aabbcc ... xxyyzz , itu hanya terdiri dari digit yang diulang beberapa kali, itu secara sepele dapat dibagi menjadi 11 : a0b0c ... x0y0z . Pengamatan ini menghilangkan setengah dari ruang pencarian. Jika N adalah panjang ganjil, maka panjang a , b dan c semuanya harus ganjil juga (pengurangan ruang pencarian 75%), dan jika N adalah panjang genap, maka hanya satu dari a , b atau c yang mungkin lebih panjangnya (25% pengurangan ruang pencarian).
- Dugaan: jika abc merupakan kelipatan dari 11 , misalnya 407 , maka semua pengulangan ganjil dari a , b dan c juga akan menjadi kelipatan dari 11 . Ini jatuh dari ruang lingkup keterbagian di atas oleh 11 aturan; pada kenyataannya, hanya pengulangan ganjil di antara mereka yang diizinkan secara eksplisit. Saya tidak punya bukti untuk ini, tetapi pengujian sistematis tidak dapat menemukan contoh tandingan. Bandingkan: 444077777 , 44444000777 , 44444440000077777777777 , dll. Siapa pun dapat merasa bebas untuk membuktikan atau membantah dugaan ini. Aditsu sejak itu menunjukkan ini benar.
Bentuk lainnya
2 set angka yang berulang
Jumlah bentuk yang dikejar randomra , a ... a ... b , tampaknya jauh lebih langka. Hanya ada 7 solusi yang kurang dari 10 1700 , yang terbesar adalah 12 digit.
4 set digit berulang
Nomor dari formulir ini, a ... ab ... bc ... cd ... d , tampaknya lebih padat daripada yang saya cari. Ada 69 solusi kurang dari 10 100 , dibandingkan dengan 32 menggunakan 3 set digit berulang. Antara 10 11 dan 10 100 adalah sebagai berikut:
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
Ada argumen heuristik sederhana mengapa ini harus terjadi. Untuk setiap panjang digital, ada sejumlah set berulang (yaitu 3 set berulang, atau 4 set berulang, dll.) Di mana jumlah solusi yang diharapkan akan menjadi yang tertinggi. Transisi terjadi ketika jumlah solusi tambahan yang mungkin, diambil sebagai rasio, melebihi probabilitas bahwa jumlah tambahan yang akan diperiksa adalah prima. Mengingat sifat eksponensial dari kemungkinan untuk memeriksa, dan sifat logaritmik dari distribusi bilangan prima, ini terjadi relatif cepat.
Jika, misalnya, kami ingin menemukan solusi 300 digit, memeriksa 4 set digit berulang akan jauh lebih mungkin menghasilkan solusi daripada 3 set, dan 5 set akan lebih mungkin lagi. Namun, dengan kekuatan komputasi yang saya miliki, menemukan solusi yang jauh lebih besar dari 100 digit dengan 4 set akan berada di luar kapasitas saya, apalagi 5 atau 6.
9901444133
(penghapusan satu 9) bukan prime (7 x 1414492019
). Contoh Anda sebelumnya benar.