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 ntrê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 ntừ 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: nchia 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 nvà 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ữ wcố định chúng ta có thể chọn các giá trị khác nhau của sự nthỏa mãn w=Omega(n). Nhỏ nhất nlà 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 ntrong khi giữ whằng số sẽ tăng LHS nhiều hơn RHS. Cũng lưu ý rằng cho w>2và 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 = 0và n = 1; w = 1và nlà số nguyên tố; hay w = 2và nlà bán thủ.
Trường hợp w = 0. n = 1, như vậy Nlà bất kỳ nguyên tố.
Trường hợp w = 1. Nếu n = 2sau đó N = 2pvà chúng tôi yêu cầu p = p + 2, mà không có giải pháp. Nếu n = 3sau đó chúng ta có pq = p + q + 3và hai giải pháp, (p=2, q=5)và (p=3, q=3). Nếu n = 5sau đó 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 = 4sau đó N = 4pqvà 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 = 6sau đó 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) == 1vậ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) == 2như tôi thấy.