我有一个非常大的数字:
char *big_numbr_str = "4325242066733762057192832260226492766115114212292022277";
我希望保持这个数字的平方根直到它为< 1000.在PHP中,我可以相对容易地做到这一点:
while($num > 1000):
$num = sqrt($num);
endwhile;
$num = floor($num);
我现在正试图在C中实现相同,以相同的结果结束。作为参考,在while循环中经过5个循环后,PHP的最终结果来自上面的片段+起始编号为50;如果你在任何其他地方将这个数字平方根5次,你应该得到类似的结果,向下舍入。
我如何在普通C中实现同样的目标?似乎存储大量此大小在C中比预期更复杂。
答案 0 :(得分:4)
你需要一个大数字库来处理这样的数字。在Linux上,您可以尝试GMP。
或者,您可以编写自己的bigint例程并手动实现平方根。这需要一些时间才能正确实现,因为您基本上必须手动执行所有数学运算。它可以完成(我已经完成了),但它不会“简单”。
答案 1 :(得分:0)