Số nguyên tố luôn mê hoặc mọi người. 2300 năm trước Euclid đã viết trong "Các yếu tố" của mình
Một số nguyên tố là số được đo bằng một đơn vị.
có nghĩa là một số nguyên tố chỉ chia hết cho 1
(hoặc bởi chính nó).
Mọi người luôn tìm kiếm mối quan hệ giữa các số nguyên tố và đã đưa ra một số thứ khá kỳ lạ (như trong "thú vị").
Ví dụ một số nguyên tố Sophie Germain là số nguyên tố p
mà 2*p+1
cũng là số nguyên tố.
Một số nguyên tố an toàn là số nguyên tố p
mà (p-1)/2
cũng là số nguyên tố, mà là chính xác ngược tình trạng của một số nguyên tố Sophie Germain.
Những điều này có liên quan đến những gì chúng tôi đang tìm kiếm trong thử thách này.
Một chuỗi Cickyham loại I là một chuỗi các số nguyên tố, trong đó mọi phần tử ngoại trừ phần tử cuối cùng là một số nguyên tố Sophie Germain và mọi phần tử ngoại trừ phần tử đầu tiên là một số nguyên tố an toàn . Số lượng phần tử trong chuỗi này được gọi là chiều dài của nó .
Điều này có nghĩa là chúng ta bắt đầu với một số nguyên tố p
và tính toán q=2*p+1
. Nếu q
cũng là số nguyên tố, chúng ta có chuỗi Cunnigham loại I có độ dài 2. Sau đó, chúng tôi kiểm tra 2*q+1
và cứ thế, cho đến khi số được tạo tiếp theo là hợp số.
Chuỗi Cickyham loại II được xây dựng theo nguyên tắc gần như giống nhau, sự khác biệt duy nhất là chúng tôi kiểm tra 2*p-1
ở mỗi giai đoạn.
Chuỗi Cickyham có thể có độ dài 1 , có nghĩa là cả 2 * p + 1 và 2 * p-1 đều không phải là số nguyên tố. Chúng tôi không quan tâm đến những điều này .
Một số ví dụ về chuỗi Cickyham
2
bắt đầu một chuỗi loại I có chiều dài 5.
2, 5, 11, 23, 47
Số được xây dựng tiếp theo sẽ 95
không phải là số nguyên tố.
Điều này cũng cho chúng ta biết, rằng 5
, 11
, 23
và 47
không bắt đầu bất kỳ chuỗi kiểu tôi , bởi vì nó sẽ có những yếu tố preceeding.
2
cũng bắt đầu một chuỗi loại II có độ dài 3.
2, 3, 5
Tiếp theo sẽ là 9
, không phải là chính.
Hãy thử 11
loại II (chúng tôi đã loại nó khỏi loại I trước đó).
Chà, 21
sẽ là tiếp theo, không phải là chính, vì vậy chúng tôi sẽ có độ dài 1 cho "chuỗi" đó, mà chúng tôi không tính trong thử thách này.
Thử thách
Viết một chương trình hoặc chức năng đó, đưa ra một số
n
như là đầu vào, viết / trả về số bắt đầu của thứ n chuỗi Cunningham của loại I hoặc II của ít nhất chiều dài 2 , tiếp theo là một dấu cách, tiếp theo là loại chuỗi nó bắt đầu ( tôi hoặc II ), theo sau là dấu hai chấm, theo sau là độ dài của loại chuỗi đó. Trong trường hợp một số nguyên tố bắt đầu cả hai loại chuỗi (loại I và loại II), chuỗi loại I được tính trước.Thí dụ:
2 I:5
Hãy nhớ rằng, đó n
có thể là một phần của chuỗi đã bắt đầu trước đó thuộc bất kỳ loại nào, trong trường hợp đó, nó không nên được coi là số bắt đầu của chuỗi loại đó.
Hãy xem xét điều này bắt đầu như thế nào
Chúng tôi bắt đầu với 2
. Vì nó là số nguyên tố đầu tiên, chúng ta có thể chắc chắn rằng không có chuỗi nào bắt đầu bằng một số nguyên tố thấp hơn có chứa 2
.
Số tiếp theo trong một chuỗi loại tôi sẽ là 2*2+1 == 5
. 5
là số nguyên tố, vì vậy chúng tôi có một chuỗi có độ dài ít nhất là 2.
Chúng tôi coi đó là chuỗi đầu tiên. Còn loại II thì sao? Số tiếp theo sẽ là 2*2-1 == 3
. 3
là số nguyên tố, do đó, một chuỗi có độ dài ít nhất là 2 cho loại II.
Chúng tôi tính đó là chuỗi thứ hai. Và chúng tôi đã hoàn thành 2
.
Nguyên tố tiếp theo là 3
. Ở đây chúng ta nên kiểm tra xem nó có nằm trong chuỗi mà một số nguyên tố thấp hơn bắt đầu không.
Kiểm tra loại I : (3-1)/2 == 1
. 1
không phải là số nguyên tố, vì vậy 3 có thể là điểm khởi đầu cho một chuỗi loại I.
Hãy kiểm tra xem. Tiếp theo sẽ là 3*2+1 == 7
. 7
là số nguyên tố, vì vậy chúng tôi có một chuỗi loại I có độ dài ít nhất là 2. Chúng tôi tính đó là chuỗi thứ ba.
Bây giờ chúng tôi kiểm tra xem có 3
xuất hiện trong chuỗi loại II không bắt đầu một số nguyên tố thấp hơn.
(3+1)/2 == 2
. 2
là số nguyên tố, vì vậy 3 không thể được coi là số bắt đầu cho chuỗi loại II. Vì vậy, điều này không được tính, ngay cả khi số tiếp theo sau 3
trong chuỗi này, sẽ là5
, là số nguyên tố. (Tất nhiên chúng tôi đã biết điều đó, và tất nhiên bạn có thể và nên nghĩ về phương pháp của riêng bạn cách thực hiện các kiểm tra này.)
Và như vậy chúng tôi kiểm tra trên cho 5
, 7
, 11
và như vậy, đếm đến khi chúng tôi tìm ra chuỗi Cunningham thứ n của ít nhất chiều dài 2.
Sau đó (hoặc có thể sớm hơn một chút ;)
), chúng tôi cần xác định độ dài hoàn chỉnh của chuỗi chúng tôi đã tìm thấy và in kết quả theo định dạng đã đề cập trước đó.
Nhân tiện: trong các thử nghiệm của tôi, tôi không tìm thấy bất kỳ số nguyên tố nào ngoài việc 2
bắt đầu cả hai loại chuỗi có độ dài lớn hơn 1
.
Ví dụ đầu vào / đầu ra
Đầu vào
1
Đầu ra
2 I:5
Đầu vào
10
Đầu ra
79 II:3
Đầu vào
99
Đầu ra
2129 I:2
Các đầu ra cho đầu vào 1..20
2 tôi: 5 2 II: 3 3 tôi: 2 7 II: 2 19 II: 3 29 tôi: 2 31 II: 2 41 tôi: 3 53 tôi: 2 79 II: 3 89 tôi: 6 97 II: 2 113 tôi: 2 131 I: 2 139 II: 2 173 tôi: 2 191 tôi: 2 199 II: 2 211 II: 2 229 II: 2
Một danh sách 5000 đầu ra đầu tiên có thể được tìm thấy ở đây .
Đây là mã golf. Khoảng trắng tùy ý được phép trong đầu ra, nhưng loại và số phải được phân tách bằng một khoảng trắng và dấu hai chấm như trong các ví dụ. Sử dụng bất kỳ sơ hở không được cho phép, đặc biệt là nhận được kết quả từ các trang web đang không được phép.
Chúc may mắn :)
:)
2
chiều dài chuỗi kép lớn hơn 1. Đây là một bằng chứng bằng cách loại bỏ.
2
và3
là số nguyên tố duy nhấtp
mà cả hai2p-1
và2p+1
đều là số nguyên tố, do đó, là số nguyên tố2
duy nhất bắt đầu chuỗi Cickyham không tầm thường của cả hai loại.