&试题A&
梅森素数
如果一个数字的所有真因子之和等于自身,则称它为完全数,或者完美数,例如6=1+2+3; 28=1+2+4+7+14,早在公元前300多年,欧几里得就给出了判断完全数的定理,若2^n-1是素数,则2^(n-1)(2^n-1)是完全数,其中^表示乘方,乘方的优先级比四则运算高,例如2^3=8;22^3=16;2^3-1=7;但人们很快发现当n是判断一个大数的素数到今天依然是个难题。因为法国的数学家梅森的猜想,我们习惯上把2^n-1的素数称为梅森素数,截止2013年2月,一共找到了48个梅森素数,新近找到的梅森素数太大,以至于难与编程窥其全貌,所以我们把任务的难度降低一点,1963年,美国伊利诺伊大学为了纪念他们找到的第二十三个梅森素数,每个寄出的信封都印上了2^11213的素数字样
2^11213-1这个数字已经很大有(3000)多位,请你求出这个素数十进制表示的最后100位。
解题思路<大整数的运算BigInteger>
代码实现
import java.math.BigInteger;
import java.util.Scanner;
public class pipei {
public static void piei(String[]args)
{
BigInteger x=BigInteger.valueOf(2).pow(11213).subtract(BigInteger.ONE);//pow指求一个数的次方
String s=x.toString();
int length=s.length();
System.out.println(length);
String ans=s.substring(length-100);
System.out.println(ans.length()+" "+ans);
}
}
运行结果