C 找到最小n的快速方法,以便X<;=n*n

C 找到最小n的快速方法,以便X<;=n*n,c,C,很抱歉标题不好。我找不到更好的标题了。(欢迎编辑: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

很抱歉标题不好。我找不到更好的标题了。(欢迎编辑: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
long int i=0;N=8;

而(i*i使用
中的
sqrt
函数。它将是一个(相当)高效的算法,并且应该比循环运行得快。然后汇总,您就有了答案

int find_containing_int(double x)
{
  const double sqr = sqrt(x);

  return ceil(sqr);
}

使用
中的
sqrt
函数。它将是一个(相当)高效的算法,并且运行速度应该比循环快得多。然后四舍五入,您就有了答案

int find_containing_int(double x)
{
  const double sqr = sqrt(x);

  return ceil(sqr);
}

你说“4不包含数字8”是什么意思?你是说“4是8的除数”?9如何包含8?你的意思是找到大于或等于某个输入数的最小平方数?8大于4…想象一个2x2网格…它将有1,2,3,4个单元格…但对于单元格8,我需要3x3网格…这将给我1,2,3,4,5,6,7,8,9…:)这不是沙巴兹建议的吗?N*N>=X的最小整数N?你说的“4不包含数字8”是什么意思?你的意思是“4是8的除数”?9怎么包含8?您的意思是找到大于或等于某个输入数的最小平方数?8大于4。。。。想象一个2x2的网格。。。它将有1,2,3,4个细胞。。。。但是对于8号牢房,我需要3x3的网格。。。这将给我1,2,3,4,5,6,7,8,9…)这不是沙巴兹的建议吗?N*N>=X的最小整数N?别忘了用
-lm
链接/编译。别忘了用
-lm
链接/编译。