用java语言判断一个数是不是质数?

Python021

用java语言判断一个数是不是质数?,第1张

下面是我用JavaScript写的素数函数,供参考,大同小异

PrimeA=function(n,nth){/* 小于n的素数表

参数nth 指定返回第n个素数

*/

//var t0=Time.now5()

/*

方法1:利用isPrime 废弃!

var t=[]

for(var i=2i<n+1i++){

if(isPrime(i)){

t.push(i)

}

}

consolelog('方法1:耗时:'+(+Time.now5()-(+t0)))

return t

*/

//方法2:利用筛法

var p=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59]//自己往后补充,越多越好,可以加快检测小素数的效率

if(nth && n<=669){

return p[n-1]

}

if(!nth && n<2){

return []

}

if(n<=5000 && !nth){

for(var i=0i<100i++){

var j=p.indexOf(n-i)

if(j>-1){return p.slice(0,j+1)}

}

return p

}

var m=nth?Math.ceil(n*Math.log(n)+1000):n //pn ∼ nln(n)

// for(var i=5001i<=mi+=2){

var i=5001

while(i){

var t=Math.floor(Math.sqrt(i)), pl=p.length

for(var j=0j<plj++){//p.length

if(i%p[j] == 0){

break

}else if(p[j+1]>t){

p.push(i)

if(nth && pl==n-1){

return i

}

break

}

}

if(!nth && i>=n-1){

return p

}

i+=2

}

return p

//方法3:Wilson测试

}

else

if(num1%2!=0&&(num1+1)%2==0){

System.out.println(num1+"是质数")

}

else{

System.out.println(num1+"不是质数")

15%2=1,

(15+1)%2=0

->

15是质数???

修改:

//前面略

else

{

int

flag=1

for(int

j=2

j*j<=num1

j++)//这是质数的判断方法,只要除到这个数的开根号的数为止即可

if

(num1%j==0){System.out.println(num1+"不是质数")

flag=0

break}

if(flag)

System.out.println(num1+"是质数")

}

//后面略