Tìm số nguyên tố bất hợp pháp (có thể) nhỏ nhất


8

Số nguyên tố bất hợp pháp là số nguyên tố mã hóa thông tin bất hợp pháp để sở hữu - cụ thể, trong một trường hợp, tệp gzip của mã nguồn DeCSS , một phần mềm để giải mã DVD được bảo vệ bản sao.

Nhiệm vụ của bạn có hai giai đoạn:

  1. Xây dựng một tệp nguồn thực hiện DeCSS trong càng ít byte càng tốt. Điều này có thể được thực hiện trong bất kỳ ngôn ngữ.

  2. Nén tệp nguồn này (sử dụng thuật toán nén yêu thích của bạn) và lặp qua các tệp có thể giải nén cùng một thứ (sử dụng định lý Dirichlet nếu nó giúp) cho đến khi đạt được tính nguyên thủy.

Vì thực tế việc chứng minh tính nguyên thủy có thể chiếm quá nhiều sức mạnh tính toán, nên phần thứ hai sẽ vượt qua bài kiểm tra " số nguyên tố có thể xảy ra " (ví dụ Miller-Rabin ) với xác suất dưới 2 -100 .

Người có số nguyên tố nhỏ nhất có thể thắng.


Bạn có thể cần phải sử dụng open("out.gz", 'wb')thay thế.
Joe Z.

1
Bạn đã nói gần như chính xác những gì chúng ta nên làm. Đâu là niềm vui khi chỉ cần làm theo đơn đặt hàng?
ugoren

Bản thân DeCSS có đủ thách thức mà tôi đã đề xuất trong Sandbox, mặc dù không ai có vẻ thích thú. Nhưng nó đủ tầm thường để xác minh rằng nó cần một bộ kiểm tra tốt. Đối với định lý của Dirichlet: điều đó có liên quan gì đến các tệp nén cùng một thứ? Có bao nhiêu định dạng tệp nén có chuỗi số học vô hạn giải nén cho cùng một thứ?
Peter Taylor

2
@PeterTaylor: Theo mục nhập Wikipedia (là nơi tôi đã nhận được thông tin đó ở vị trí đầu tiên), việc thêm các ký tự null vào tệp gzip sẽ dẫn đến cùng một mã được tạo ra khi giải nén. Cho rằng bạn có tệp gzip hợp lệ, định lý của Dirichlet nói rằng cuối cùng bạn sẽ đạt được một số nguyên tố bằng cách thêm các ký tự null vào cuối tệp và sau đó thêm một số tương đối chính vào toàn bộ.
Joe Z.

1
Việc triển khai GNU có thể không đưa ra lỗi, nhưng nếu vậy thì đó không phải là bộ giải nén tuân thủ như được định nghĩa trong thông số định dạng tệp. Đối với các trường hợp thử nghiệm, chúng cần đủ nhỏ để nhúng vào câu hỏi và không vi phạm bản quyền của bất kỳ ai.
Peter Taylor

Câu trả lời:


4

Java (khoảng 2048 bit)

14951059135011030015480908520726485619103063818476057564660360628799292628035097139943806440612109515246411930476451010075357954683100898936593739762786721583164361680031433048702186473094092210118641364347032899100220949873928633438856732508590863996147513646363328498023218161000104939462296626885931085914071985322044175133733909287366858309877885352980365735019082872958155754848273583139151810812417879417661663044291630490856568568829579704849173609110647303708828534149066778229242936297219753177569833591637704406031011600073082097633261877649625598598670707453831253888534424016277678136396605413799234576729

Mã là

void C(int[]s,int[]k){int a=k[0]^s[84]|256,b=k[1]^s[85],c=k[2]^k[3]<<8^k[4]<<16^s[86]^s[87]<<8^s[88]<<16,d=c&7,e=0,f,i=127;for(c=c*2+8-d;++i<2048;e>>=8){e+=S[f=(c>>17^c>>14^c>>13^c>>5)&255]+T[d=Q[b]^R[a]];b=a/2;a=a&1<<8^d;c=c<<8|f;s[i]=P[s[i]]^e&255;}}//!Y

Tôi đã tự do đổi tên các bảng tra cứu từ CSSt1... CSSt5thành P... T, và phương thức từ CSSDescrambleđến C. Tôi cũng bỏ qua bước gzip, vì nó cho một tệp lớn hơn nguồn.


Vượt qua Ballie-PSW. Ngoài ra, tôi có hiểu rằng thuật toán nén yêu thích của bạn là None? ;)
primo

2
@primo, thuật toán nén yêu thích của tôi là theo ngữ cảnh: thuật toán mang lại kết quả nhỏ nhất cho dữ liệu đầu vào. ;)
Peter Taylor
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.