Совершенные квадраты между двумя числами

Есть ли какой-нибудь быстрый способ в C (менее 1 секунды), чтобы найти количество идеальные квадраты между двумя числами. Например, для 1 <-> 10 у нас есть 2 полных квадрата 4 и 9. А как насчет 1 <-> 2 ^ 60 или другого большего числа.

Это медленно

while(i*i<=n)
{
    sum+=i==((long long)(sqrt(i*i)));
    i++;
}

где n, скажем, 2 ^ 60, и мы начинаем с i = 2.

10
задан Fred Foo 19 January 2012 в 23:48
поделиться