生成大整数数字然后相乘



我正在尝试生成具有X位数的大整数。 我以为我已经弄清楚了,直到我意识到下面的代码正在创建比特,而不是数字。 我一直在试图找出一种创建数字而不是位的体面方法。 有人可以帮助我并指出正确的方向吗? 直到现在,我还没有使用过BigInteger。 哦,这是一个家庭作业问题,这就是为什么我寻求帮助,而不是确切的答案。 再次感谢大家。

BigInteger X = new BigInteger(23000, new Random());
BigInteger Y = new BigInteger(23001, new Random());
BigInteger result =  X.multiply(Y);

log2(10) =~ 3.321928 ,因此如果需要 23000 个十进制数字,则应指定 76404 位 (23000*3.321928)。 请注意,这将在区间 [0..1023000] 中生成一个数字。 数字本身可能不会有 23000 位数字。

如果要强制它有 23000 位数字,您应该生成一个 [0..1022999] 范围内的数字,并向其添加 1022999

您可能想要创建一个字符数组,该数组的每个项目都保存一个数字。而且你许多人需要实现一种算法来乘以它。

如果你的家庭作业需要考虑使用更少的内存,你可能希望使用每个字符来存储 2 位数字或使用一个整数来存储 9 位数字。

您在这里使用的是一个BigInteger构造函数,它接受intRandom并生成均匀分布在0(2^(numBits) - 1)范围内的BigInteger。请参阅 BigInteger Oracle 文档 - 它将帮助您完成家庭作业。

编辑:

也许以下内容会有所帮助:计算机只能识别两个数字:0 和 1。

它们被称为

8 位表示一个八位字节

在当今的大多数计算机系统中,8位也表示一个字节

所以下面的数字:010 在基数 2(这是计算机识别的基数)中,它由 3 位组成,等于以 10 为底(被人们广泛使用)到 3。 4 在基数 10等于 011 和 5 等于 100 - 希望你得到了图片。

使用 3 位表示一个

数字等同于您可以表示一个范围从 0 到 (2^(3) - 1)=7 的数字。因此,3 位允许我们表示具有 1 位的数字。使用 4 位将允许我们表示范围从 0 到 (2^(4) - 1)=15 的数字 - 即两位数的数字。

现在,您需要想一种方法来告诉您如何找到表示具有X位数的数字的位数。

相关内容

最新更新