在前面的章节中,我们分别讨论了质数和指数,今天我们不做其他的,仅仅将它们进行整合一下,为什么呢?因为在数学领域,有一种特殊的正整数,形如:2^p - 1,其中指数p为质数,这种数字被称为梅森数,其中的质数又被称为梅森素数。
梅森数中有一种“变体”——伪素数:2^(p-1)-1,它能被p整除,同时p又为非偶数的合数。
OK,今天我们用JAVA语言来针对这几个特殊数字进行编译。
一、梅森数
我们先根据梅森数的公式自定一个方法用以计算梅森数:
/**
* 计算梅森数
*
* @param number
* @return
*/
private static BigDecimal calculateMersenneNumber(BigDecimal number) {
// TODO Auto-generated method stub
return integerMi(BigDecimal.valueOf(2), number).subtract(BigDecimal.ONE);
}
上述这个方法仅仅是用以计算2^p - 1的结果,因此我们在main()方法体中编译代码时需要“提取”质指数:
for (BigDecimal a = BigDecimal.valueOf(2); a.compareTo(Big