用javascript代码来判断素数

用javascript代码来判断素数,第1张

写了个小东西,希望对你有帮助

<html>

<head>

<script>

function show(){

var base=document.getElementById('base').value

isPrime(base)?alert(base+' 是素数'):alert(base+' 不是素数')

}

function isPrime(number) {

if (number <2) {

return false

} else {

for (var j = 2j <= Math.sqrt(number)j++) {

if (number % j == 0) {

return false

}

}

}

return true

}

function filter(obj) {

var r = /^\d+$/

var r2 = /\D+/

if (!r.test(obj.value)) {

obj.value = obj.value.replace(r2, '')

}

}

function filter2(obj){

var r2 = /\D+/g

clipboardData.setData('text',clipboardData.getData('text').replace(r2,''))

}

</script>

</head>

<body style="font-size:12px">

数字<input type='input' id='base' onkeyup='filter(this)' onbeforepaste="filter2()"/>

<br>

<input type="button" value="素数?" onclick="show()">

</body>

</html>

以下代码可以实现JavaScript求n个素数,当n=500时满足题目需求。

function prime(n){

    var primeArr = [2]

    var isPrime = function(num, primeList){

        if(num == 2){

            return true

        }

        for(var i = 3, iLen = Math.sqrt(num), j = 1 i <= iLen i = primeList[j++]){

            if(num % i == 0){

                return false

            }

        }

        return true

    }

    if(isNaN(n) || n < 1){

        return []

    }

    for(var i = 3,  i < n i += 2){

        if(isPrime(i, primeArr)){

            primeArr.push(i)

        }

    }

    return primeArr

}

prime(100)

//函数调用

prime(100)//计算100以内的素数:

素数即除去1和其本身两个数之外,不能被任何数整除的整数

由公理可知,如果一个整数能被分解成多个整数,则必有一个数不大于该整数的平方根(反证法可知,如果分解成的两个数都大于平方根,则乘积必大于原数),故在循环时,只需循环到该数的平方根即(Math.sqrt(num)为求平方根)

如果一个数能被2整除,则除2之外其他数都不是素数,故从3开始遍历能够减少循环次数

如果一个数能够被分解,则最终分解结果必然为多个素数之积,故循环时只需要尝试之前算好的素数能否整除当前的数,极大减少循环次数


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8123554.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存