抱歉这个糟糕的头衔.我找不到更好的头衔.(欢迎编辑: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
Run Code Online (Sandbox Code Playgroud)
当N = 100000000时,这不是一种有效的计算方法.
获得包含X的i*i的更有效方法是什么?
使用sqrt来自的功能<math.h>.它将是一个(相当)有效的算法,并且应该比你的循环运行得快得多.然后四舍五入,你有答案.
int find_containing_int(double x)
{
const double sqr = sqrt(x);
return ceil(sqr);
}
Run Code Online (Sandbox Code Playgroud)