检查数字是否是完美的Square(数字超过15位)

时间:2013-04-13 15:13:49

标签: c# c++ c square-root

我希望计算一个数字的平方根,如果可能的话包含超过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;    
    }
}

但双倍或长双倍可以容纳15位数或更多

语言不是吧。 我也可以用C#编码

谢谢:)

3 个答案:

答案 0 :(得分:2)

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

然而,你需要一种不同的技术来判断一个100位的BigInteger是否是一个完美的正方形,因为我没有现成的“根”功能。

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

C中整数的大小取决于平台,因此无法保证它可以容纳多少位数。您可以查看GNU Multiple Precision math library来处理C中的大数字。