如何用javascript编写出出1到100的素数?

JavaScript032

如何用javascript编写出出1到100的素数?,第1张

for(let i=1i<=100i++){

if(check(i)) {

console.log(i)

}

}

// 判断当前给定的数 num 是否为素数, 是素数返回 true, 否则返回 false

function check(num){

if(num === 1) {

// 1 不是素数也不是合数, 返回 false

return false

} else {

// 声明变量用于统计从1~根号下 num,之间 能被 num 整除的数的个数

let count = 0

for(let i=1i<=Math.sqrt(num)i++) {

if(num%i === 0) {

count++

// 当发现在1~根号下 num 之间有超过1个数可以被 num 整除, 说明 num 一定不是素数,直接返回false, 后面的数不用判断了

if(count >1) {

return false

}

}

}

// 因为素数只能被1和自身整除,

// 那么从1~根号下 num 之间一定只有一个数(1)可以被 num 整除, 所以当 count 等于1时, 这个num 就是素数

return count == 1

}

return false

}

    var a=n//n为输入所测的数值

    var b=1//这里不懂,下面关于b是做什么的都不明白

    if(a==0||a==1){

        document.write("0或1不是素数")

    }else{

        for(var i=2i<ai++){

            if(a%i==0){//没有余数,能整除

                b=0 //这就是一个标记,记录a有被某个数整除了

                break

            }

        }

        if(b){

            document.write(a+"是素数")

        }else{

            document.write(a+"不是素数")

        }

    }

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

<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>