对不起的头衔感到抱歉。我找不到更好的头衔。 (欢迎编辑:p)
让我们说有一个数字X = 8。我知道2 * 2 = 4所以它不包含数字8。
编辑:想象一个2x2网格...... 1,2,3,4 ......它不包含8
现在,3 * 3 = 9,我们找到了胜利者(n = 3)!
用于此目的的我(差)代码
long long int i=0; N = 8;
while (i*i <N)
{
i++;
}
l = i; // l is to store he number "3"; say 8 is in a 3x3 grid
当N = 100000000时,这不是一种有效的计算方法。
获得包含X的i * i的更有效方法是什么?
答案 0 :(得分:6)
使用sqrt
中的<math.h>
功能。它将是一个(相当)有效的算法,并且应该比你的循环运行得快得多。然后围捕,你有答案。
int find_containing_int(double x)
{
const double sqr = sqrt(x);
return ceil(sqr);
}