2

我希望计算一个超过 15 位的数字的平方根,如果可能的话,100 位数字会很棒

像 100000000000000 这样的数字

目前我正在使用整数作为数据类型的C

int IsPerfectSquare(int number)
{

   if (number< 0)

   return 0;

   int root = (round(sqrt(number)));

    if(number == (root * root))

    {        
       return 1;    
    }    
    else
    {        
      return 0;    
    }
}

但是 double 或 long double 是否可以容纳 15 位或更多

语言没有吧。我也可以用 C# 编写代码

谢谢 :)

4

3 回答 3

2

在 C# 中,您可以使用decimal最多 29 位数字和BigInteger任意多位数字。

但是,您需要一种不同的技术来判断 100 位 BigInteger 是否是一个完美的正方形,因为我知道没有现成的“根”函数。

于 2013-04-13T15:19:12.743 回答
0

在 C++ 中,您可以使用以下函数检查 long double 可以容纳多少个 bigs:

 std::cout << std::numeric_limits<long double>::digits10 << std::endl;

如果你真的想用数字处理100数字,你需要编写你自己的 BigInteger 类。

于 2013-04-13T15:18:56.400 回答
0

C 中整数的大小取决于平台,因此无法保证它可以容纳多少位。您可以查看GNU 多精度数学库以处理 C 中的大数。

于 2013-04-13T15:22:34.393 回答