Есть ли какой-нибудь быстрый способ в 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, и мы начинаем с я = 2.