publicstaticbooleanisPrime(int a) {
if (a <= 2)
returnfalse;
else {
int max = (int) Math.floor( Math.sqrt(n));
for (int i = 2; i <= max; i++)
if (a % i == 0) // 若能被整除,则说明不是素数,返回false returnfalse;
}
returntrue;
}
以上这种方法对于不是很大的数字来说没有问题,但如果是一个很大的数字,计算时间就太长了。比如加密解密程序中,往往需要一个100位的大数,对于大数判断是否为素数,推荐Miller Rabin算法。这个算法的核心思想是:如果p是素数,x是小于p的正整数,且x^2 mod p = 1,那么要么x=1,要么x=p-1。 有兴趣的话建议自行Google,会有相关算法解释,因为还是比较复杂的,涉及到费马小定理、快速幂模算法之类的,加上博主本人数学也没有好到哪去,所以先不说咯~