Обозначим
и
.
Тогда
.
При этом
, т.е.
.
Для данного
будет
.
Если
при делении на 4 даёт остаток 2 или 3, то решений нет.
При остатке 0 кандидаты в
- нечётные, при остатке 1 кандидаты в
- чётные, в диапазоне
.
Получаем набор пар
, так что
.
Для каждой пары
будет набор пар
, таких что
.
Но
, т.е. из этих пар берем только
и
делится на 3.
Т.е. берем все такие
, тогда
и
.
Можно заметить, что
возрастает и в пределе стремится к 2, так что для каждого
будет не более одного кандидата
.
-- 23.09.2021, 22:45 --Если интересно, вот Matlab код:
function r = count_abc(n)
n4 = mod(n,4);
r = 0;
if n4==2 || n4==3; return; endif;
n1 = ceil(sqrt(n+8)-3);
n2 = floor(sqrt(n)-1);
if n2<n1 || (n2==n1 && mod(n1+n4,2)==0); return; endif;
p = n1;
if mod(p+n4,2)==0; p = p+1; endif;
q = (n-(p+1)^2)/4;
b1 = min(q,p-q)-mod(q,3);
r = floor(b1/3)+1;
endfunction
-- 23.09.2021, 22:47 --Пример:
>> count_abc(1000000000)
ans = 4094
>> count_abc(1000000001)
ans = 1177