소개
다음과 같이 정의 된 정수 시퀀스 f를 고려하십시오 .
- f (2) = 2
- 경우 N 다음 홀수 소수이다 (N) = F (F (N-1) + f를 (N + 1)) / 2
- 만약 N = P · Q가 다음, 복합체 인 F (N) = F (p) * F (Q)
그것은 것을보고 매우 어렵지 않다 F (N)를 = N 모든에 대한 N ≥ 2 , 따라서 계산 F 매우 흥미로운 도전이 될하지 않을 것입니다. 첫 번째 경우를 반으로 줄이고 두 번째 경우를 두 배로 정의를 바꾸어 봅시다. 다음과 같이 정의 된 새로운 시퀀스 g를 얻습니다 .
- g (2) = 1
- 경우 N 다음 홀수 소수이며, g (n)은 g = (N-1) + g (N + 1)
- 만약 N = P · Q를 합성하고, 다음 g (N) = g (p) · g (Q)
작업
당신의 임무는 입력으로 정수 n ≥ 2 를 취하고 출력으로 g (n) 을 생성하는 것입니다. 정수 오버플로에 대해 걱정할 필요는 없지만 g (1025) = 81을 올바르게 계산할 수 있어야하며 알고리즘은 이론적으로 임의로 큰 입력에 대해 작동해야합니다.
전체 프로그램 또는 함수를 작성할 수 있습니다. 가장 낮은 바이트 수가 이깁니다.
예
위에서 g (1025) = 81 이라고 주장 했으므로 직접 계산해 봅시다. 1025 의 소인수 분해 는
1025 = 5*5*41 => g(1025) = g(5)*g(5)*g(41)
41 이 소수 이기 때문에
g(41) = g(40) + g(42)
다음으로, 40 과 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)
이 작은 소수의 경우
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
이것은
g(41) = g(40) + g(42) = g(5) + g(3)*g(7) = 3 + 2*3 = 9
과
g(1025) = g(5)*g(5)*g(41) = 3*3*9 = 81
테스트 사례
g의 최대 값은 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)
하고,이 a(2*n+1) = a(n) + a(n+1)
경우 보유하고 2*n+1
소수. 다른 많은 홀수의 경우 시퀀스는 아마도 우연의 일치 일 것입니다.
15, 21, 25, 29, 33, 41
, 그리고 무리 더,하지만 난 왜 실제 패턴을 찾을 수 없습니다.)