2 qq 31663901 qq_31663901 于 2016.09.24 20:50 提问

c++中数据存储问题!!!
c++

如何储存1000000000大小的int型数据?比如说我要找出100000000000内所有质数!找出的质数应该存储在什么地方?数组肯定不行,动态申请也办不到似乎怎么了办?

4个回答

caozhy
caozhy   Ds   Rxr 2016.09.24 20:57
已采纳

如果要表示100000000000以内的数,用int肯定不行,起码是long。甚至long long。那么一个数字可能需要8个字节或更多。
1000000000个数x8个字节,需要8GB以上的内存,你的编译器和操作系统都必须是x64的,而你的计算机必须有>8GB的内存。
所以将这些数字放在内存中是不经济的,你可以考虑使用文件存储。

caozhy
caozhy http://download.csdn.net/detail/evil0angel/3371647
大约一年之前 回复
qq_31663901
qq_31663901 那可以麻烦示范一下代码吗?找出一亿内的质数并储存
大约一年之前 回复
earbao
earbao   2016.09.25 09:19

整形表示不了这么大的数据,可以考虑使用字符串来表示,并进行和实现大数据的四则运算。

earbao
earbao 回复qq_31663901: int 和long, long long等等都是有在计算机内存都是有范围限制的,如32位的计算机寻址只能寻找2^32-1= 4 294 967 296-1, 64位的计算机只能寻址2^63- 1=0x7FFF FFFF FFFF FFFF
大约一年之前 回复
qq_31663901
qq_31663901 为什么表示不了
大约一年之前 回复
hello_bravo_
hello_bravo_   2016.09.25 22:27

可以试试外排序,然后一段一段的读进来查找,也可以用字符串的大数据

robin8624
robin8624   2016.09.27 16:50

现在的PC都支持int64,一些指令还支持int128,超过了就只能是大数运算库了。
Java和C#都有原生的大数运算库,C/C++没有原生的有第三方的,要不就自己写一个。

100000000000这个数其实并不大,不明白为什么会放不下。RSA256的Key肯定比这个要大,也没说要放到文件中处理。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!