Существует ли на PARI функция вызова наибольшего делителя
![$n$ $n$](https://dxdy-02.korotkov.co.uk/f/5/5/a/55a049b8f161ae7cfeb0197d75aff96782.png)
меньшего
![$m$ $m$](https://dxdy-01.korotkov.co.uk/f/0/e/5/0e51a2dede42189d77627c4d742822c382.png)
?
Например нам нужно осуществить трансформацию:
![$$27-18-12-8-6-5$$ $$27-18-12-8-6-5$$](https://dxdy-03.korotkov.co.uk/f/a/c/d/acda1b71a6a8f4495cc13a8f2a711c0482.png)
Осуществляется она следующим образом:
- первым делом мы отнимаем от числа
его наибольший делитель, меньший
, т.е.
, получаем ![$18$ $18$](https://dxdy-02.korotkov.co.uk/f/1/5/d/15d851cfce799553cec908376fe8edd982.png)
- затем от числа
мы отнимаем его наибольший делитель, меньший
, т.е.
, получаем ![$12$ $12$](https://dxdy-02.korotkov.co.uk/f/d/0/b/d0b46deac7c0bf4f6285cbeb41067c8882.png)
- после этого от числа
мы отнимаем его наибольший делитель, меньший
, т.е.
, получаем ![$8$ $8$](https://dxdy-01.korotkov.co.uk/f/0/0/5/005c128d6e551735fa5d938e44e7a61382.png)
- затем от числа
мы отнимаем его наибольший делитель, меньший
, т.е.
, получаем ![$6$ $6$](https://dxdy-04.korotkov.co.uk/f/3/2/7/327c36301dc71617dc7032f8ce30b23682.png)
- и наконец от числа
мы отнимаем его наибольший делитель, меньший
, т.е.
, получаем ![$5$ $5$](https://dxdy-02.korotkov.co.uk/f/9/6/1/9612eecfec9dadf1a81d296bd247377782.png)
Очевидно, что дальше двигаться уже нельзя. Значит интересующее нас число это
![$5$ $5$](https://dxdy-02.korotkov.co.uk/f/9/6/1/9612eecfec9dadf1a81d296bd247377782.png)
. То же самое, но без вызова наибольшего делителя
![$n$ $n$](https://dxdy-02.korotkov.co.uk/f/5/5/a/55a049b8f161ae7cfeb0197d75aff96782.png)
меньшего
![$m$ $m$](https://dxdy-01.korotkov.co.uk/f/0/e/5/0e51a2dede42189d77627c4d742822c382.png)
можно реализовать через
![$$\begin{bmatrix}
27 & - \\
27 & 26 \\
27 & 25 \\
27 & 24 \\
27 & 23 \\
27 & 22 \\
27 & 21 \\
27 & 20 \\
27 & 19 \\
27 & 18 \\
27 & 17 \\
27 & 16 \\
27 & 15 \\
27 & 14 \\
27 & 13 \\
27 & 12 \\
27 & 11 \\
27 & 10 \\
18 & 9 \\
18 & 8 \\
18 & 7 \\
12 & 6 \\
12 & 5 \\
8 & 4 \\
8 & 3 \\
6 & 2 \\
5 & 1
\end{bmatrix}$$ $$\begin{bmatrix}
27 & - \\
27 & 26 \\
27 & 25 \\
27 & 24 \\
27 & 23 \\
27 & 22 \\
27 & 21 \\
27 & 20 \\
27 & 19 \\
27 & 18 \\
27 & 17 \\
27 & 16 \\
27 & 15 \\
27 & 14 \\
27 & 13 \\
27 & 12 \\
27 & 11 \\
27 & 10 \\
18 & 9 \\
18 & 8 \\
18 & 7 \\
12 & 6 \\
12 & 5 \\
8 & 4 \\
8 & 3 \\
6 & 2 \\
5 & 1
\end{bmatrix}$$](https://dxdy-04.korotkov.co.uk/f/b/0/d/b0de1feefa26853c4eea2b8aa4a40f7582.png)
Т.е. здесь у нас
![$$a(n,m)=\begin{cases}
m,&\text{если $n=0$;}\\
a(n-1,m)-(m-n),&\text{если $a(n-1,m)\operatorname{mod}(m-n)=0$;}\\
a(n-1,m),&\text{в противном случае.}
\end{cases}$$ $$a(n,m)=\begin{cases}
m,&\text{если $n=0$;}\\
a(n-1,m)-(m-n),&\text{если $a(n-1,m)\operatorname{mod}(m-n)=0$;}\\
a(n-1,m),&\text{в противном случае.}
\end{cases}$$](https://dxdy-01.korotkov.co.uk/f/4/0/2/402e2d5678edd56c8dd739b85649badf82.png)
Вот простейшая программка:
Код:
a(n)=local(A=n, D); for(i=1, n-1, D=n-i; A=if(A%D==0,A-D,A)); return(A)
Работает неплохо, когда надо сгенерить немного первых значений
![$a(n)$ $a(n)$](https://dxdy-03.korotkov.co.uk/f/e/b/1/eb1e4d26da404d5c7d56055c19d365a082.png)
, но когда речь заходит об
![$a(\frac{3^n+1}{2})$ $a(\frac{3^n+1}{2})$](https://dxdy-01.korotkov.co.uk/f/0/2/4/024549282b6785976734b8e948223be182.png)
, то задача становится уже достаточно проблематичной.