我试图生成随机数,并且我使用BigInteger类来检查生成的数字是否是带有probablePrime()的素数;
这是我的代码:
btnRun.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Random prng = new Random();
Toast.makeText(getBaseContext()," " + BigInteger.probablePrime(10,prng), Toast.LENGTH_SHORT).show();
}
});
我真的不明白probablePrime()中的第一个参数,在我的情况下是10.我知道它的int值的字节,这是否会影响生成数字的范围? 我只得到523-1003的值但是我想从1-anything 生成随机数并在probablePrime()中检查它们;方法
这怎么可能?
答案 0 :(得分:1)
查看BigInteger.randomPrime(int, Random)
的javadoc:
public static BigInteger probablePrime(int bitLength, 随机rnd)
使用指定的bitLength返回可能为素数的正BigInteger。此方法返回的BigInteger是复合的概率不超过2-100。
参数:
- 返回的BigInteger的bitLength - bitLength 。 [强调我的]
- rnd - 用于选择要测试素数的候选者的随机位源。
你会注意到参数是要获得的素数中的位的数量,因此10表示0到1023是候选者。
如果您希望素数达到特定限制,您应该确定所需的位数:
int numBits = Integer.highestOneBit(yourLimit);
并丢弃超过限额的素数。