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可以尝试使用如下所示的内容。从技术上讲,有一种方法可以逐位计算平方根。