Có một số lượng lớn các hàm tạo số nguyên tố. Khá nhiều trong số chúng được chế tạo và dựa trên sàng của Eratosthenes, hàm Möbius hoặc định lý Wilson và thường không thể tính toán trong thực tế. Nhưng cũng có những máy phát điện, có cấu trúc rất dễ dàng và được tìm thấy một cách tình cờ.
Năm 2003, Stephen Wolfram đã khám phá một lớp phương trình tái phát lồng nhau trong một thí nghiệm máy tính trực tiếp tại Trường học hè NKS. Một nhóm người xung quanh Matthew Frank đã theo dõi các thí nghiệm bổ sung và phát hiện ra một tính chất thú vị của sự tái phát đơn giản
a(n) = a(n-1) + gcd(n,a(n-1))
với giá trị bắt đầu của a(1) = 7
. Sự khác biệt a(n) - a(n-1) = gcd(n,a(n-1))
dường như luôn luôn là 1 hoặc một số nguyên tố. Một số khác biệt đầu tiên là ( OEIS A132199 ):
1, 1, 1, 5, 3, 1, 1, 1, 1, 11, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 3, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 47, 3, 1, 5, 3, ...
Nếu chúng ta chỉ bỏ qua 1s, chúng ta sẽ nhận được chuỗi sau ( OEIS A137613 ):
5, 3, 11, 3, 23, 3, 47, 3, 5, 3, 101, 3, 7, 11, 3, 13, 233, 3, 467, 3, 5, 3,
941, 3, 7, 1889, 3, 3779, 3, 7559, 3, 13, 15131, 3, 53, 3, 7, 30323, 3, ...
Eric S. Rowland đã chứng minh tính nguyên thủy của từng yếu tố trong danh sách này một vài năm sau đó. Như bạn có thể thấy, các số nguyên tố được trộn lẫn và một số trong số chúng xuất hiện nhiều lần. Nó cũng đã được chứng minh, trình tự bao gồm vô số các số nguyên tố khác nhau. Hơn nữa, nó được phỏng đoán, rằng tất cả các số nguyên tố lẻ xuất hiện.
Bởi vì máy phát nguyên tố này không được chế tạo mà chỉ được tìm thấy một cách tình cờ, nên máy phát nguyên tố được gọi là "tự nhiên". Nhưng lưu ý rằng trong thực tế, trình tạo này cũng không khả thi để tính toán. Hóa ra, một số nguyên tố p chỉ xuất hiện sau (p–3)/2
1 giây liên tiếp. Tuy nhiên, việc thực hiện trình tạo nguyên tố này sẽ là nhiệm vụ của bạn.
Thử thách:
Viết hàm hoặc chương trình in các n
phần tử đầu tiên của chuỗi A137613
(chuỗi không có 1s). Bạn có thể đọc số đầu vào n >= 0
thông qua STDIN, đối số dòng lệnh, lời nhắc hoặc đối số hàm. Xuất các n
phần tử đầu tiên ở bất kỳ định dạng nào có thể đọc được sang STDOUT hoặc trả về một mảng hoặc danh sách có các giá trị này.
Đây là mã golf. Do đó mã ngắn nhất sẽ thắng.
Bảng xếp hạng:
Dưới đây là Stack Snippet để tạo cả bảng xếp hạng thông thường và tổng quan về người chiến thắng theo ngôn ngữ. Để đảm bảo rằng câu trả lời của bạn hiển thị, vui lòng bắt đầu câu trả lời của bạn bằng một tiêu đề, sử dụng mẫu Markdown sau:
# Language Name, N bytes
Trong đó N là kích thước của trình của bạn. Nếu bạn cải thiện điểm số của mình, bạn có thể giữ điểm số cũ trong tiêu đề, bằng cách đánh bại chúng thông qua. Ví dụ:
# Ruby, <s>104</s> <s>101</s> 96 bytes
a(n)-a(n-1)
n
thể bằng không?
//
) và giải thích nó trong bài gửi của bạn. Nếu bất cứ ai không đồng ý với bạn, bạn luôn có thể chỉnh sửa bài đăng của mình.