C 存储和打印大于2^64的整数值

C 存储和打印大于2^64的整数值,c,types,multiprecision,C,Types,Multiprecision,我正试图写一个程序来寻找梅森素数。使用无符号long-long类型,我能够确定第9个梅森素数的值,即(2^61)-1。对于较大的值,我需要一个可以存储大于2^64的整数值的数据类型 我应该能够使用像*,*=,,这样的运算符。看看。你不能对C原生类型做你想做的事情,但是有一些库可以处理任意大的数字,比如。没有标准的方法可以让数据类型大于64位。您应该检查系统的文档,其中一些定义了128位整数。然而,要真正拥有灵活大小的整数,您应该使用其他表示形式,例如使用数组。然后,由您定义操作符=,,等等 幸运

我正试图写一个程序来寻找梅森素数。使用无符号long-long类型,我能够确定第9个梅森素数的值,即(2^61)-1。对于较大的值,我需要一个可以存储大于2^64的整数值的数据类型


我应该能够使用像
*
*=
这样的运算符。看看。

你不能对C原生类型做你想做的事情,但是有一些库可以处理任意大的数字,比如。

没有标准的方法可以让数据类型大于64位。您应该检查系统的文档,其中一些定义了128位整数。然而,要真正拥有灵活大小的整数,您应该使用其他表示形式,例如使用数组。然后,由您定义操作符
=
,等等


幸运的是,库(如)允许您使用任意长度的整数。

要存储大量数字,有许多选择,下面按首选项的递减顺序给出:

1) 使用他人在github、codeflex等上为您提到的语言开发的第三方库,即C

2)切换到其他语言,如Python,它具有大量的处理能力,支持BigNUM或C++的.java


3)开发自己的数据结构,可以用字符串(100字符长度可以指100个十进制数字),用加法、减法、乘法等自定义操作,就像C++中的复数库那样。这个选择可能是为了你的研究和教育目的。

所有这些人基本上都在说,64位CPU不可能仅仅用一条指令就能添加这些巨大的数字,但你需要一个能够添加这些数字的算法。这样的算法必须将这两个数字分成几部分

他们列出的库可以让你做到这一点,一个很好的练习是自己开发一个库(只需学习算法/函数即可)。

使用double:)


它会解决你的问题

请注意,您将无法使用这些C运算符,您必须调用函数来执行数学运算。C不支持操作符重载。是的,你将别无选择,只能使用函数或转到C++,在那里你可以这样做。我不认为使用<代码>双< /C>会解决任何问题。如果我们假设典型的系统中,
long-long
double
都是64位,那么它实际上会让事情变得更糟,因为
double
只有53位精度。