274 chữ số
4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111
Điều này mất khoảng 20 giờ thời gian CPU để tìm và khoảng 2 phút cho mỗi nguyên tố để chứng minh. Ngược lại, giải pháp 84 chữ số có thể được tìm thấy trong khoảng 3 phút.
84 chữ số
444444444444444444444444444444444444444444444444441111111113333333333333333333333333
77777777999999999999999777777777 (32 chữ số)
66666666666666622222222222222333 (32 chữ số)
647777777777777777777777777 (27 chữ số)
44444441333333333333 (20 chữ số)
999996677777777777 (18 chữ số)
167777777777777 (15 chữ số)
Tôi khuyên dùng công cụ này nếu bạn muốn xác nhận tính nguyên thủy: D. Alpern's ECM Applet
Cũng sử dụng một cách tiếp cận repdigit, dường như là cách tiếp cận có khả năng nhất để tìm thấy các giá trị lớn. Kịch bản sau đây bỏ qua thuật toán trên hầu hết các con số hoặc cắt ngắn sẽ dẫn đến bội số của 2, 3, 5 và bây giờ là 11 c / o PeterTaylor (đóng góp của anh ta đã tăng hiệu quả khoảng 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
có thể tìm thấy ở đây: http://codepad.org/KtXsydxK
Ngoài ra, bạn cũng có thể sử dụng gmpy.is_prime
chức năng: Dự án GMPY
Một số cải tiến tốc độ nhỏ là kết quả của hồ sơ. Việc kiểm tra tính nguyên thủy cho thời gian dài nhất trong bốn ứng cử viên đã được chuyển đến cuối cùng, xrange
thay thế range
và long
thay thế các int
loại phôi. int
dường như có chi phí không cần thiết nếu biểu thức được đánh giá dẫn đến a long
.
Quy tắc chia hết
Đặt N là số nguyên định dạng có dạng a ... ab ... bc ... c , trong đó a , b và c là các chữ số lặp lại.
Đến 2 và 5
- Để tránh chia hết cho 2 và 5 , c có thể không nằm trong tập [0, 2, 4, 5, 6, 8] . Ngoài ra, nếu b là thành viên của bộ này, độ dài của c có thể không ít hơn 2.
Bởi 3
- Nếu N = 1 (mod 3) , thì N có thể không chứa bất kỳ [1, 4, 7] nào , vì loại bỏ bất kỳ thứ nào trong số này sẽ dẫn đến kết quả là bội số của 3 . Tương tự như vậy đối với N = 2 (mod 3) và [2, 5, 8] . Việc triển khai này sử dụng một hình thức hơi yếu về điều này: nếu N chứa một trong [1, 4, 7] , thì nó có thể không chứa bất kỳ [2, 5, 8] nào và ngược lại. Ngoài ra, N có thể không chỉ bao gồm [0, 3, 6, 9] . Đây phần lớn là một tuyên bố tương đương, nhưng nó cho phép một số trường hợp tầm thường, ví dụ a , b và cmỗi lần được lặp lại bội số của 3 lần.
Đến 11
- Như PeterTaylor lưu ý, nếu N có dạng aabbcc ... xxyyzz , thì nó chỉ bao gồm các chữ số được lặp lại một số chẵn, nó chia hết cho 11 : a0b0c ... x0y0z . Quan sát này giúp loại bỏ một nửa không gian tìm kiếm. Nếu N có độ dài lẻ thì chiều dài của a , b và c cũng phải là số lẻ (giảm 75% không gian tìm kiếm) và nếu N có độ dài chẵn thì chỉ một trong số a , b hoặc c có thể chẵn về chiều dài (giảm 25% không gian tìm kiếm).
- Phỏng đoán: nếu abc là bội của 11 , ví dụ 407 , thì tất cả các lần lặp lẻ của a , b và c cũng sẽ là bội của 11 . Điều này rơi ra khỏi phạm vi của sự phân chia trên theo quy tắc 11 ; trong thực tế, chỉ có sự lặp lại kỳ lạ là trong số những người được cho phép rõ ràng. Tôi không có bằng chứng cho điều này, nhưng thử nghiệm có hệ thống không thể tìm thấy một ví dụ ngược lại. So sánh: 444077777 , 44444000777 , 44444440000077777777777 , v.v ... Bất cứ ai cũng có thể cảm thấy thoải mái để chứng minh hoặc bác bỏ phỏng đoán này. aditsu đã chứng minh điều này là chính xác.
Các chứng từ khác
2 bộ chữ số lặp lại
Số dạng mà ngẫu nhiên đang theo đuổi, một ... ab ... b , dường như hiếm hơn nhiều. Chỉ có 7 giải pháp nhỏ hơn 10 1700 , trong đó lớn nhất là 12 chữ số.
4 bộ chữ số lặp lại
Số của mẫu này, một ... ab ... bc ... cd ... d , dường như được phân bổ dày đặc hơn so với những chữ số mà tôi đang tìm kiếm. Có 69 giải pháp nhỏ hơn 10 100 , so với 32 sử dụng 3 bộ chữ số lặp lại. Những người trong khoảng từ 10 11 đến 10 100 như sau:
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
Có một lập luận heuristic đơn giản là tại sao điều này nên xảy ra. Đối với mỗi độ dài kỹ thuật số, có một số bộ lặp lại (nghĩa là 3 bộ lặp lại hoặc 4 bộ lặp lại, v.v.) mà số lượng giải pháp dự kiến sẽ cao nhất. Quá trình chuyển đổi xảy ra khi số lượng các giải pháp bổ sung có thể, được lấy theo tỷ lệ, vượt xa khả năng số lượng bổ sung cần kiểm tra là số nguyên tố. Do tính chất theo cấp số nhân của các khả năng kiểm tra và tính chất logarit của phân phối số nguyên tố, điều này xảy ra tương đối nhanh chóng.
Ví dụ, nếu chúng tôi muốn tìm một giải pháp 300 chữ số, kiểm tra 4 bộ chữ số lặp lại sẽ có khả năng tạo ra một giải pháp hơn 3 bộ và 5 bộ sẽ có nhiều khả năng hơn. Tuy nhiên, với khả năng tính toán mà tôi có, việc tìm một giải pháp lớn hơn 100 chữ số với 4 bộ sẽ nằm ngoài khả năng của tôi, chứ đừng nói đến 5 hoặc 6.
9901444133
(xóa một 9) không phải là số nguyên tố (7 x 1414492019
). Ví dụ trước đây của bạn là chính xác.