<script>
function check()
{
mydata=31211101987654321;
for(i=2;i<parseInt(mydata/2);i++)
if(mydata%i==0)
{alert("不是质数");
return;
}
alert("是质数");
}
check();
</script>

解决方案 »

  1.   


    由于31211101987654321大于一个整数所能表示的范围,
    所以 seabell(百合心) 的方法得出此数为一个合数,因为当i等于2时,就已发生return.
      

  2.   

    啊,sorry,我没考虑到,还真不知道怎么做了呢
      

  3.   

    这是个质数,js 是没能力的int64
      

  4.   

    我照着 seabell(百合心) 的办法算了算,是个合数
    <script>function check()
    {
    mydata1=312111019876543,mydata2=21;
    var upPerhaps=parseInt(Math.pow(mydata1,0.5))+2
    for(i=3;i<upPerhaps;i=i+2)
    if(((mydata1%i)*100+mydata2)%i==0)
    {
    alert("不是质数,它是"+i+"与"+((mydata1-mydata1%i)/i*100+((mydata1%i)*100+mydata2)/i)+"的乘积");
    return;
    }
    alert("是质数");
    }
    check();
    </script>