Существует ли на PARI функция вызова наибольшего делителя
меньшего
?
Например нам нужно осуществить трансформацию:
Осуществляется она следующим образом:
- первым делом мы отнимаем от числа его наибольший делитель, меньший , т.е. , получаем
- затем от числа мы отнимаем его наибольший делитель, меньший , т.е. , получаем
- после этого от числа мы отнимаем его наибольший делитель, меньший , т.е. , получаем
- затем от числа мы отнимаем его наибольший делитель, меньший , т.е. , получаем
- и наконец от числа мы отнимаем его наибольший делитель, меньший , т.е. , получаем
Очевидно, что дальше двигаться уже нельзя. Значит интересующее нас число это
. То же самое, но без вызова наибольшего делителя
меньшего
можно реализовать через
Т.е. здесь у нас
Вот простейшая программка:
Код:
a(n)=local(A=n, D); for(i=1, n-1, D=n-i; A=if(A%D==0,A-D,A)); return(A)
Работает неплохо, когда надо сгенерить немного первых значений
, но когда речь заходит об
, то задача становится уже достаточно проблематичной.