Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 平方根C中非常大的数字,直到<;1000_Php_C - Fatal编程技术网

Php 平方根C中非常大的数字,直到<;1000

Php 平方根C中非常大的数字,直到<;1000,php,c,Php,C,我有一个非常大的数字: char *big_numbr_str = "4325242066733762057192832260226492766115114212292022277"; 我想保持这个数字的平方根,直到它小于1000。在PHP中,我可以相对轻松地做到这一点: while($num > 1000): $num = sqrt($num); endwhile; $num = floor($num); 我现在正试图在C中实现同样的效果,以同样的结果结束。作为参考,在wh

我有一个非常大的数字:

char *big_numbr_str = "4325242066733762057192832260226492766115114212292022277";
我想保持这个数字的平方根,直到它小于1000。在PHP中,我可以相对轻松地做到这一点:

while($num > 1000):
    $num = sqrt($num);
endwhile;

$num = floor($num);
我现在正试图在C中实现同样的效果,以同样的结果结束。作为参考,在while循环中经过5个循环后,上面代码段的最终结果+起始数字是50;如果你将这个数字的平方根乘以其他任何地方的5倍,你应该会得到类似的结果,四舍五入


如何在普通C中实现同样的效果?在C中存储这样大小的数字似乎比预期的要复杂。

您需要一个大的数字库来处理这样的数字。在Linux上,您可以尝试


或者,您可以编写自己的bigint例程并手动实现平方根。这将需要一些时间来正确实现,因为您基本上必须一次一个数字地手工完成所有的数学运算。这是可以做到的(我已经做到了),但它不会“简单”。为了存储如此大的整数(
432524206673370572057192832260226492761111142122920227
),你可以使用
整数数组,每个元素存储一个位数。数组的行为应类似于单个整数。编写执行计算的例程(就像你在一张纸上所做的那样)


或者,谷歌,看看你是否能找到任何实现大整数算法的库。请看Steven Skiena编写的库,如and。

是否可以使用存储在字符中的数字进行“相对简单”的平方根运算?是的,您可以:取字符串的左半部分,并进行一些更正。重复此操作,直到剩余部分<1000(<4个字符)似乎符合GMP,谢谢!虽然我仍然很想知道是否有一种原始的C方法,而不需要链接,但Tiago可以尝试使用如下所示的内容。从技术上讲,有一种方法可以逐位计算平方根。