Используя функцию Мёбиуса, чтобы найти квадратные свободные числа

Недавно я узнал о числах без квадратов и обнаружил, что можно найти N-е такое число, вычислив функцию Мёбиуса до квадратного корня из N.

Я видел реализацию, но не смог понять процедуру.

Сегмент кода идет как

lb = 1;
ub = 10000000000; //max value of N we can look for
max = sqrt(ub);

while (lb < ub){
long m = (lb+ub)/2;

long thisN = m;
for (i = 2; i < max; i++)
thisN -= mobius[i] * (m / (i*i));

if (thisN < n)
lb = m+1;
else
ub = m;
}

return lb;

куда mobius массив, который имеет значение функции Мобиуса i по указателю i,

Как этот процесс двоичного поиска находит N-е квадратное свободное число из массива? Кроме того, как вычисление функции Мёбиуса до квадратного корня из N позволяет нам найти до N-го такое число?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]