打印1--100内的质数(JS版实现)

打印1–100内的质数(JS版实现)

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>打印1--100的质数</title>
    <script>
        /*
            打印1--100的质数 --> 2--100 由于1不是质数
            质数:除了1和它本身,便不能再被整除。
             例如: 7 % (2--6的数都不为0);
        */
       document.write("1--100中是质数的有:" + "<br>");
       
        // 外循环用于遍历2--100中的所有值,可以打印输出看结果。
       for(var num = 2; num <= 100; num++){   

            // 这行代码需要在第一条for循环内,这是因为,第二个在执行for循环时,会执行到flag = false;
           var flag = true;

            // 内循环:是用于被num除的(所以限制的条件是小于num)至于number的初始值是2,是因为2就是质数,不需要再认证了。
           for(var number = 2; number < num; number++){

                // 如果不是质数的话,就可以被整除。例如: 4 / 2 = 2...0
                if(num % number == 0){
                    // document.write("num = " + num + ", number = " + number + "<br>");    用来测试的代码
                    flag = false;
                }
           }
            // 如果没有执行到 第二条for语句中的,if语句,也说明这个数是质数,那么就会执行下面的语句。    
           if(flag){
               document.write(num + "<br>");
           }
       }

    </script>
</head>
<body>
    
</body>
</html>

解析已经在里面了,可以在看完代码后,自己试着敲几遍。能够理解每一句的代码的含义,为什么要这么做,而不是那样做?还有什么更好的解决方法吗?

**执行结果**
改良版:改良了的部分有两个:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        /*
            求1--100的质数
        */

        document.write("(1--100)的质数为:");
        for(var i = 2; i <= 100; i++){
            var flag = true;
            /*
                内循环的判断条件 变成了这个数的开方。例如 9 开方后是3,只需要判断2和3便可,有开方的一定是质数。
                对于非质数: 例如 11,开方是3点多左右,也就是2和3。在这个范围内找已经足够了。
            */ 
            for(var j = 2; j <= Math.sqrt(i); j++){
                if(i % j == 0){
                    flag = false;
                    // 当判断出了一个数不是质数时,便立即退出内循环
                    break;
                }
            }
            if(flag){
                document.write(i + "&nbsp;");
            }
        }

    </script>
</head>
<body>
    
</body>
</html>```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值