Golfscript, 68 67 62 61 ký tự
[.]({[.2@{1$1$%{)}{\1$/1$}if}*;;].,*0+{+}*.2$?@@.@+\@)!}do;,(
Đây là một biểu thức: nó lấy n
trên ngăn xếp và để lại kết quả trên ngăn xếp. Để biến nó thành một chương trình lấy n
từ stdin và in kết quả ra thiết bị xuất chuẩn, thay thế phần đầu [
bằng~
Trung tâm của nó là [.2@{1$1$%{)}{\1$/1$}if}*;;]
(28 ký tự) chiếm số cao nhất trên ngăn xếp và (bằng một thuật toán cực kỳ kém hiệu quả) tạo ra một danh sách các yếu tố chính của nó. Mã giả tương đương kiểu C:
ps = [], p = 2;
for (int i = 0; i < n; i++) {
if (n % p == 0) {
ps += p;
n /= p;
}
else p++;
}
Việc 0+
trước đây {+}*
là xử lý trường hợp đặc biệt n==1
, vì Golfscript không thích gấp một thao tác nhị phân trong danh sách trống.
Một trong những điểm cố định không chính là 27; Tôi đã tìm thấy điều này mà không sử dụng chương trình bằng cách xem xét ánh xạ (p a ->
a 2 p), đây là điểm cố định nếu a == p (a-1) / 2 và thử nhỏ a
. ( a==1
đưa ra sự cố định của các số nguyên tố).
Tìm kiếm với chương trình sẽ xuất hiện điểm cố định thứ hai: 30 = (2 + 3 + 5) * 3
Phụ lục: bằng chứng là chỉ có hai điểm cố định không chính
Ký hiệu: sopfr(x)
là tổng các thừa số nguyên tố của x
, với sự lặp lại (A001414). Omega(x)
là số lượng các thừa số nguyên tố của x
(A001222). Vì vậy, chức năng kế nhiệm Higley làh(x) = sopfr(x) Omega(x)
Giả sử chúng ta có một điểm cố N = h(N)
định là sản phẩm của n=Omega(N)
số nguyên tố.
N = p_0 ... p_{n-1} = h(N) = n (p_0 + ... + p_{n-1})
Lý thuyết số cơ bản: n
chia thành p_0 ... p_{n-1}
, vì vậy w=Omega(n)
các số nguyên tố đó là các yếu tố chính của n
. Wlog chúng tôi sẽ đưa họ là người cuối cùng w
. Vì vậy, chúng ta có thể chia cả hai bên n
và có được
p_0 ... p_{n-w-1} = p_0 + ... + p_{n-1}
hoặc là
p_0 ... p_{n-w-1} = p_0 + ... + p_{n-w-1} + sopfr(n)
Cho rằng tất cả các số nguyên tố p_0
để p_{n-w-1}
được lớn hơn 1, tăng ai trong số họ làm tăng LHS hơn RHS. Vì vậy, cho một n
, chúng tôi có thể liệt kê tất cả các giải pháp ứng cử viên.
Cụ thể, không thể có giải pháp nếu LHS lớn hơn RHS đặt tất cả các số nguyên tố "miễn phí" thành 2. Tức là không có giải pháp nào nếu
2^{n-w} > 2 (n-w) + sopfr(n)
Vì sopfr(n) <= n
(với đẳng thức chỉ cho n = 4 hoặc n số nguyên tố), chúng ta có thể đưa ra tuyên bố yếu hơn rằng không có điểm cố định nếu
2^{n-w} > 3 n - 2 w
Giữ w
cố định chúng ta có thể chọn các giá trị khác nhau của sự n
thỏa mãn w=Omega(n)
. Nhỏ nhất n
là như vậy 2^w
. Lưu ý rằng nếu 2^{n-w}
ít nhất là 3 (tức là nếu n-w>1
, điều đó đúng nếu n>2
) thì tăng n
trong khi giữ w
hằng số sẽ tăng LHS nhiều hơn RHS. Cũng lưu ý rằng cho w>2
và lấy nhỏ nhất có thể n
, bất đẳng thức được thỏa mãn và không có điểm cố định.
Điều đó để lại cho chúng tôi ba trường hợp: w = 0
và n = 1
; w = 1
và n
là số nguyên tố; hay w = 2
và n
là bán thủ.
Trường hợp w = 0
. n = 1
, như vậy N
là bất kỳ nguyên tố.
Trường hợp w = 1
. Nếu n = 2
sau đó N = 2p
và chúng tôi yêu cầu p = p + 2
, mà không có giải pháp. Nếu n = 3
sau đó chúng ta có pq = p + q + 3
và hai giải pháp, (p=2, q=5)
và (p=3, q=3)
. Nếu n = 5
sau đó 2^4 > 3 * 5 - 2 * 1
, vì vậy không có giải pháp hơn nữa với w = 1
.
Trường hợp w = 2
. Nếu n = 4
sau đó N = 4pq
và chúng tôi yêu cầu pq = p + q + 4
. Điều này có giải pháp số nguyên p=2, q=6
, nhưng không có giải pháp chính. Nếu n = 6
sau đó 2^4 > 3 * 6 - 2 * 2
, vì vậy không có giải pháp hơn nữa với w = 2
.
Tất cả các trường hợp đã hết, vì vậy các điểm cố định không chính là 27 và 30.
highley(1) == 1
vậy? Một không có yếu tố chính, vì vậy danh sách kết quả trong 4) là[1, 0]
, vì vậyhighley(1) == 2
như tôi thấy.