Ну и функция на языке PARI/GP для выяснения микстурности.
На этот раз их две, чтобы не загромождать.
Вспомогательная функция:
Код:
subsets(v, n)=my(lst=List(),v1=[]);forvec(v1=vector(n,i[1,#v]),listput(lst,vecextract(v,v1)),2);Vec(lst)
Функция
subsets(v,n) возвращает вектор, состоящий из векторов длиной
n элементов, составленные из элементов вектора
v. Проверка на то что
n не больше длины
v не делается. То есть функция возвращает все сочетания по
n элементов из
v.
Основная функция:
Код:
Ktina129001(n)=my(v=[],s=0);if(numdiv(n)<11,return(0));v=divisors(n);v=v[1..floor(numdiv(n)/2)];v=subsets(v,5);for(i=1,#v,s=0;for(j=1,5,s=s+v[i][j]^2);if(s==n,return(v[i])));return(0)
Функция возращает ноль если число
n не микстурное, или возвращает вектор из пяти делителей, сумма квадратов которых равна числу
n, если оно микстурное. Возвращается первая в лексикографическом порядке микстурная комбинация, если их несколько.