Tìm số nguyên tố lớn nhất vẫn là số nguyên tố sau khi xóa chữ số


19

Tại /math/33094/deleting-any-digit-yields-a-prime-is-there-a-name-for-this câu hỏi sau đây được hỏi. Có bao nhiêu số nguyên tố vẫn còn nguyên tố sau khi bạn xóa bất kỳ một trong các chữ số của nó? Ví dụ 719như một số nguyên tố như bạn nhận được 71, 1979. Trong khi câu hỏi này chưa được giải quyết, tôi nghĩ nó tạo ra một thách thức mã hóa tốt.

Bài tập. Đưa ra số nguyên tố lớn nhất mà bạn có thể tìm thấy vẫn là số nguyên tố sau khi bạn xóa bất kỳ một trong các chữ số của nó. Bạn cũng nên cung cấp mã tìm thấy nó.

Ghi bàn. Giá trị của số nguyên tố bạn đưa ra.

Bạn có thể sử dụng bất kỳ ngôn ngữ lập trình và thư viện nào bạn thích miễn là chúng miễn phí.

Để bắt đầu mọi thứ, 99444901133là lớn nhất được đưa ra trên trang được liên kết.

Thời gian giới hạn. Tôi sẽ chấp nhận câu trả lời đúng lớn nhất được đưa ra đúng một tuần sau khi câu trả lời đúng đầu tiên lớn hơn 99444901133câu trả lời.

Điểm số cho đến nay.

Con trăn

4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111

J (Randomra) (Câu trả lời này đã bắt đầu hẹn giờ một tuần vào ngày 21 tháng 2 năm 2013.)

222223333333

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.
primo

@primo Cảm ơn, đã sửa. Đó là một lỗi đánh máy kỳ lạ của tôi.
motl7

1
Nếu có một số lớn nhất - như phân tích dường như chỉ ra, tôi tự hỏi làm thế nào bạn có thể đi đến một bằng chứng khi bạn nghĩ rằng bạn đã tìm thấy nó.
gnibbler

1
Còn những căn cứ khác thì sao? Ở cơ sở 2, tôi không thể tìm thấy bất cứ thứ gì cao hơn 11 (2r1011), 11 cũng ở cơ sở 3 (3r102), 262151 ở cơ sở 4 (4r1000000013), 17 ở cơ sở 5 (5r32), 37 ở cơ sở 7 (7r52), 47 trong cơ sở 9 (9r52).
aka.nice

Câu trả lời:


17

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.pycó thể tìm thấy ở đây: http://codepad.org/KtXsydxK
Ngoài ra, bạn cũng có thể sử dụng gmpy.is_primechứ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, xrangethay thế rangelongthay thế các intloại phôi. intdườ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 , bc là các chữ số lặp lại.

Đến 2 và 5
- Để tránh chia hết cho 25 , 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)[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 , bcmỗ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 , bc 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 , bc 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.


3
Bất kỳ giải pháp nào của biểu mẫu đều d^x e^y f^zyêu cầu ít nhất hai độ dài chuỗi là số lẻ để tránh tính chia hết cho 11. Tôi không biết liệu có is_primetừ chối bội số của 11 đủ nhanh để khiến điều này không có giá trị rõ ràng hay không.
Peter Taylor

Tôi không có nguồn gmp trước mặt tôi, nhưng rất có thể nó bắt đầu bằng việc phân chia thử nghiệm trên các số nguyên tố nhỏ. Tuy nhiên, (na&1)+(nb&1)+(nc&1) > 1đủ đơn giản để nó phải nhanh hơn. Đợi một chút, cái này có thể cắt ngắn cành đầy đủ! Nếu nalà chẵn và nb + nclà số lẻ, thì một trong số [nb, nc]đó nhất thiết phải là số chẵn và bạn có thể bỏ qua phần tiếp theo na.
Primo

Hãy cẩn thận nếu bạn đang sử dụng gmpy.is_prime (). Ngoài một điểm nào đó, nó là xác suất, vì vậy bạn cần kiểm tra nó trả về a 2. 1có nghĩa là nó chỉ có thể là một thủ tướng
gnibbler

4
Một thử nghiệm trực tiếp và chính xác cho khả năng chia hết cho 11 là thêm tất cả các chữ số ở vị trí chẵn và trừ tất cả các chữ số ở vị trí lẻ (hoặc ngược lại) và kiểm tra xem kết quả có phải là bội số của 11. Là một hệ quả (nhưng cũng có thể là suy ra trực tiếp), bạn có thể giảm tất cả các chuỗi gồm hơn 2 chữ số giống nhau thành 0 hoặc 1 chữ số (lấy độ dài chuỗi% 2). 44444440000077777777777 do đó giảm xuống còn 407; 4 + 7-0 = 11. 444444444444444444444444444444444444444444444444441111111113333333333333333333333333 giảm xuống còn 13.
aditsu

1
"mạnh mẽ"! = đã được chứng minh. Sự khác biệt là không quan trọng đối với một số người, rất quan trọng đối với những người khác. PrimeQ trong Mathematica là một biến thể BPSW cộng thêm một MR với cơ sở 3, do đó, tất nhiên sẽ chỉ mất vài mili giây. Pari / GP chứng minh số thứ tự 274 chữ số sử dụng APR-CL trong khoảng 3 giây trên máy tính 5 tuổi và ECPP mã nguồn mở lõi đơn mất khoảng 2 giây. Không có gì ngạc nhiên khi Java mất nhiều thời gian hơn, nhưng nó không phải là vấn đề lớn. Tôi đã có bản dịch Perl của mình về điều này làm BPSW trên cả 4, sau đó là bằng chứng cho cả 4 chỉ khi tất cả đều vượt qua các bài kiểm tra giá rẻ.
DanaJ

5

222223333333 (12 chữ số)

Ở đây tôi chỉ tìm kiếm aa..aabb..bb định dạng tối đa 100 chữ số. Chỉ có các hit khác là 23 37 53 73 113 311.

Mã J (đã dọn sạch) (xin lỗi, không có lời giải thích):

a=.>,{,~<>:i.100
b=.>,{,~<i.10
num=.".@(1&":)@#~
p=.(*/"1@:((1&p:)@num) (]-"1(0,=@i.@#)))"1 1
]res=./:~~.,b (p#num)"1 1/ a

Một tìm kiếm toàn diện của mẫu này lên tới 1560 chữ số (và đang đếm) cho thấy không có gì lớn hơn giải pháp 12 chữ số này.
Primo

2

Chỉnh sửa: Ai đó đã làm một phân tích sâu hơn waaay hơn tôi đã làm ở đây.

Không phải là một giải pháp mà là một ước tính sơ bộ về số lượng các giải pháp n chữ số.

Dự kiến ​​số lượng giải pháp

Tạo mã J

   ops=: 'title ','Estimated number of solutions by digits',';xcaption ','digits',';ycaption ','log10 #'
   ops plot 10^.((%^.)%(2&(%~)@^.@(%&10))^(10&^.))(10&^(2+i.100))

Cảm ơn. Trục y hơi khó hiểu. Bạn có thực sự muốn nói 10 ^ -100 là số lượng giải pháp ước tính với khoảng 86 chữ số không?
motl7

Vâng. Nếu có số lượng hữu hạn của các giải pháp đó là tin tưởng. Mặc dù dựa trên dữ liệu hiện có , ước tính này hơi sai vì các chữ số lặp lại tạo ra mối tương quan giữa các số có một chữ số nhỏ hơn.
Randomra

1
Ai đó đã thực hiện phân tích sâu hơn waaay so với tôi
Randomra

Trục y có phải là tỷ lệ của các số có x chữ số là giải pháp không? Đó là số lượng giải pháp chia cho 10 ^ (# chữ số)? Nó không thể là số giống như 4, 11, v.v. và nhật ký của nó gần như luôn luôn ở trên 1.
motl7

1

Javascript (Lực lượng vũ phu)

Chưa tìm thấy số cao hơn

http://jsfiddle.net/79FDr/4/

Không có thư viện bigint, javascript chỉ giới hạn ở số nguyên <= 2^53.

Vì là Javascript, trình duyệt sẽ phàn nàn nếu chúng tôi không phát hành luồng thực thi cho giao diện người dùng để cập nhật, do đó, tôi đã quyết định theo dõi thuật toán đang tiến triển trong giao diện người dùng.

function isPrime(n){
    return n==2||(n>1&&n%2!=0&&(function(){
        for(var i=3,max=Math.sqrt(n);i<=max;i+=2)if(n%i==0)return false;
        return true;
    })());
};

var o=$("#o"), m=Math.pow(2,53),S=$("#s");

(function loop(n){
    var s = n.toString(),t,p=true,i=l=s.length,h={};
    if(isPrime(n)){
        while(--i){
            t=s.substring(0,i-1) + s.substring(i,l); // cut out a digit
            if(!h[t]){   // keep a hash of numbers tested so we don't end up testing 
                h[t]=1;  // the same number multiple times
                if(!isPrime(+t)){p=false;break;}
            }
        }
        if(p)
            o.append($("<span>"+n+"</span>"));
    }
    S.text(n);
    if(n+2 < m)setTimeout(function(){
        loop(n+2);
    },1);
})(99444901133);

@Schmiddty Có các thư viện int lớn cho js nhưng phương pháp vũ phu này dường như đã bị tiêu diệt.
motl7

1
@ motl7 Đồng ý, để nó chạy suốt đêm và không có câu trả lời nào được tìm thấy.
Shmiddty

1

Một liên kết đến một phân tích về vấn đề đã được đăng, nhưng tôi nghĩ rằng nó đang thiếu một vài điều. Hãy xem xét các số có chữ số m, bao gồm k dãy gồm 1 hoặc nhiều chữ số giống nhau. Nó đã được chỉ ra rằng nếu chúng ta chia các chữ số thành các nhóm {0, 3, 6, 9}, {1, 4, 7} và {2, 5, 8}, một giải pháp không thể chứa các chữ số từ cả nhóm thứ hai và thứ ba và nó phải chứa 3n + 2 chữ số từ một trong các nhóm này. Ít nhất hai trong số các chuỗi k phải có số chữ số lẻ. Trong số các chữ số {1, 4, 7} chỉ có 1 và 7 có thể là chữ số thấp nhất. Không ai trong số {2, 5, 8} có thể là chữ số thấp nhất. Vì vậy, có bốn (1, 3, 7, 9) hoặc hai (3, 9) cho chữ số thấp nhất,

Có bao nhiêu ứng cử viên? Chúng ta có m chữ số được chia thành k chuỗi ít nhất 1 chữ số. Có (m - k + 1) trên (k - 1) cách chọn độ dài của các chuỗi này, đó là khoảng (m - 1,5k + 2) ^ (k - 1) / (k - 1)!. Có 2 hoặc 4 lựa chọn cho chữ số thấp nhất, tổng cộng sáu. Có sáu lựa chọn cho các chữ số khác, ngoại trừ 36/7 lựa chọn cho chữ số cao nhất; tổng số là (6/7) * 6 ^ k. Có 2 ^ k cách để chọn độ dài của chuỗi là chẵn hay lẻ; k + 1 trong số này được loại trừ vì không có hoặc chỉ có một số lẻ; chúng ta nhân số lượng lựa chọn với (1 - (k + 1) / 2 ^ k), bằng 1/4 khi k = 2, 1/2 khi k = 3, 11/16 khi k = 4, v.v. các chữ số từ tập {1, 4, 7} hoặc {2, 5, 8} phải là 3n + 2, vì vậy số lượng lựa chọn được chia cho 3.

Nhân tất cả các số này, số lượng thí sinh là

(m - 1.5k + 2)^(k - 1) / (k - 1)! * (6/7) * 6^k * (1 - (k + 1) / 2^k) / 3

hoặc là

(m - 1.5k + 2)^(k - 1) / (k - 1)! * (2/7) * 6^k * (1 - (k + 1) / 2^k)

Bản thân ứng cử viên và số k được tạo bằng cách xóa một chữ số đều phải là số nguyên tố. Xác suất một số nguyên ngẫu nhiên xung quanh N là số nguyên tố là khoảng 1 / ln N. Xác suất cho một số chữ số m ngẫu nhiên là khoảng 1 / (m ln 10). Tuy nhiên, những con số ở đây không phải là ngẫu nhiên. Tất cả chúng đều được chọn không chia hết cho 2, 3 hoặc 5. 8 trong số 30 số nguyên liên tiếp không chia hết cho 2, 3 hoặc 5. Do đó, xác suất trở thành số nguyên tố là (30/8) / (m ln 10) hoặc khoảng 1.6286 / m.

Số lượng giải pháp dự kiến ​​là về

(m - 1.5k + 2)^(k - 1) / (k - 1)! * (2/7) * 6^k * (1 - (k + 1) / 2^k) * (1.6286 / m)^(k + 1)

hoặc cho m lớn về

(1 - (1.5k - 2) / m)^(k - 1) / (k - 1)! * 0.465 * 9.772^k * (1 - (k + 1) / 2^k) / m^2

Với k = 2, 3, 4, ... chúng tôi nhận được như sau:

k = 2: 11.1 * (1 - 1/m) / m^2
k = 3: 108 * (1 - 2.5/m)^2 / m^2 
k = 4: 486 * (1 - 4/m)^3 / m^2


k = 10: 10,065 * (1 - 13/m)^9 / m^2

Từ k = 10 trở đi, số sẽ nhỏ lại.


5
Chào mừng đến với PPCG! Đây là một phân tích tuyệt vời; tuy nhiên, chúng tôi tìm kiếm câu trả lời là câu trả lời hợp pháp cho câu hỏi. Nói cách khác, mã. Thật không may, điều đó để lại không gian ít ỏi trong cấu trúc của chúng tôi cho các bài viết chỉ bình luận, được chuyển sang các bình luận bài viết. Tuy nhiên, tôi rất ghét khi thấy một nỗ lực triệt để như vậy được chuyển xuống đống bùn của chúng tôi, vì vậy tôi muốn gợi ý rằng nếu bạn thêm một chương trình máy tính được thiết kế để trả lời các yêu cầu thách thức cho bài đăng của bạn, nó sẽ có nhiều khả năng được giữ lại xung quanh.
Jonathan Van Matre

1
Ngoài ra, tôi thực sự khuyên bạn nên kiểm tra các trang web chị em của chúng tôi: math.stackexchange.commathoverflow.net
Jonathan Van Matre
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.