我正在尝试使用X个数字生成大整数。在我意识到下面的代码是创建Bits而不是数字时,我以为我已经弄明白了。我一直试图找出一种创造数字而非比特的好方法。有人可以帮助并指出我正确的方向吗?直到现在我还没有使用BigInteger。哦,这是一个家庭作业的问题,这就是为什么我要求帮助,而不是一个确切的答案。再次感谢你们。
BigInteger X = new BigInteger(23000, new Random());
BigInteger Y = new BigInteger(23001, new Random());
BigInteger result = X.multiply(Y);
答案 0 :(得分:1)
您在此处使用的是BigInteger
的构造函数,该构造函数接受int
和Random
并生成<{>}在整个范围内均匀分布的BigInteger
0
至(2^(numBits) - 1)
。 See BigInteger Oracle Documentation - 它会帮助你完成家庭作业。
修改强>
以下可能会有所帮助:计算机只识别两个数字:0和1。
它们被称为位。
8位表示八位字节。
在今天的大多数计算机系统中,8位也代表字节。
所以下面的数字:基数2中的010(计算机识别的基数),由3位组成,等于10的基数(人们广泛使用)到3. 4基地10 等于011和5等于100 - 希望你能得到图片。
使用3位表示数字与表示可以表示0到(2 ^(3) - 1)= 7的数字相同。因此,3bits允许我们表示具有1位数的数字。使用4位将允许我们表示范围从0到(2 ^(4)-1)= 15的数字 - 即具有两位数的数字。
现在你需要想办法告诉你如何找到代表X
位数字的位数。
答案 1 :(得分:1)
log2(10) =~ 3.321928
,因此如果您需要23000个十进制数字,则应指定76404位(23000 * 3.321928)。请注意,这将在区间[0..10 23000 ]中生成一个数字。号码本身可能没有23000位数字。
如果你想强制它有23000个数字,你应该在[0..10 22999 ]范围内生成一个数字,并在其中添加10个 22999 。 / p>
答案 2 :(得分:1)
您可能想要创建一个char数组,此数组的每个项目都会保存一个数字。而且你们需要实现一种算法来乘以它。
如果您的作业需要考虑使用更少的内存,您可能希望使用每个字符来存储2位数或使用一个整数来存储9位数。