Giới thiệu
Xét một chuỗi các số nguyên f được định nghĩa như sau:
- f (2) = 2
- Nếu n là số nguyên tố lẻ thì f (n) = (f (n-1) + f (n + 1)) / 2
- Nếu n = p · q là hợp số, thì f (n) = f (p) · f (q)
Không khó để thấy rằng f (n) = n với mọi n ≥ 2 , và do đó, tính toán f sẽ không phải là một thử thách rất thú vị. Hãy thay đổi định nghĩa: giảm một nửa trường hợp đầu tiên và nhân đôi trường hợp thứ hai. Chúng tôi nhận được một chuỗi g mới được định nghĩa như sau:
- g (2) = 1
- Nếu n là số nguyên tố lẻ thì g (n) = g (n-1) + g (n + 1)
- Nếu n = p · q là hợp số, thì g (n) = g (p) · g (q)
Nhiệm vụ
Nhiệm vụ của bạn là lấy số nguyên n ≥ 2 làm đầu vào và tạo g (n) làm đầu ra. Bạn không phải lo lắng về tràn số nguyên, nhưng bạn sẽ có thể tính toán g (1025) = 81 một cách chính xác và về mặt lý thuyết thuật toán của bạn sẽ hoạt động cho các đầu vào lớn tùy ý.
Bạn có thể viết một chương trình đầy đủ hoặc một chức năng. Số byte thấp nhất sẽ thắng.
Thí dụ
Tôi đã tuyên bố ở trên rằng g (1025) = 81 , vì vậy hãy tính toán bằng tay. Hệ số nguyên tố của 1025 cho
1025 = 5*5*41 => g(1025) = g(5)*g(5)*g(41)
Vì 41 là số nguyên tố, chúng tôi nhận được
g(41) = g(40) + g(42)
Tiếp theo, chúng tôi tính toán các thừa số nguyên tố của 40 và 42 :
40 = 2*2*2*5 => g(40) = g(2)*g(2)*g(2)*g(5) = g(5)
42 = 2*3*7 => g(42) = g(2)*g(3)*g(7) = g(3)*g(7)
Đối với những số nguyên tố nhỏ này, chúng tôi nhận được
g(3) = g(2) + g(4) = 1 + 1 = 2
g(5) = g(4) + g(6) = 1 + 2 = 3
g(7) = g(6) + g(8) = 2 + 1 = 3
Điều này có nghĩa rằng
g(41) = g(40) + g(42) = g(5) + g(3)*g(7) = 3 + 2*3 = 9
và
g(1025) = g(5)*g(5)*g(41) = 3*3*9 = 81
Các trường hợp thử nghiệm
Dưới đây là các giá trị của g lên tới 50 .
2 -> 1
3 -> 2
4 -> 1
5 -> 3
6 -> 2
7 -> 3
8 -> 1
9 -> 4
10 -> 3
11 -> 5
12 -> 2
13 -> 5
14 -> 3
15 -> 6
16 -> 1
17 -> 5
18 -> 4
19 -> 7
20 -> 3
21 -> 6
22 -> 5
23 -> 7
24 -> 2
25 -> 9
26 -> 5
27 -> 8
28 -> 3
29 -> 9
30 -> 6
31 -> 7
32 -> 1
33 -> 10
34 -> 5
35 -> 9
36 -> 4
37 -> 11
38 -> 7
39 -> 10
40 -> 3
41 -> 9
42 -> 6
43 -> 11
44 -> 5
45 -> 12
46 -> 7
47 -> 9
48 -> 2
49 -> 9
50 -> 9
a(2*n) = a(n)
và a(2*n+1) = a(n) + a(n+1)
giữ nếu 2*n+1
là số nguyên tố. Đối với nhiều số lẻ khác, các chuỗi có thể đồng ý bởi sự trùng hợp.
15, 21, 25, 29, 33, 41
, và nhiều hơn nữa, nhưng tôi không thể tìm thấy bất kỳ mô hình thực tế nào tại sao.)