循環練習

練習一:質數相關

題目:在頁面中接收一個用戶輸入的數字,並判斷該數是否是質數。

方法一 代碼實現:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title></title>
        <script type="text/javascript">
            /*
            質數:只能被1和它自身整除的數,1不是質數也不是合數,質數必須是大於1的自然數。
         */

            const num = prompt('請輸入一個大於1的整數:');

            //判斷這個值是否合法
            if (num <= 1) {
                alert('該值不合法!');
            } else {
                //先用flag標誌位,來保存當前的數的狀態
                //默認當前num是質數
                let flag = true;

                //判斷num是否是質數
                //獲取2-num之間的數
                for (let i = 2; i < num; i++) {
                    //console.log(i);
                    //判斷num是否能被i整除
                    if (num % i == 0) {
                        //一旦發現:如果num能被i整除,則說明num一定不是質數,
                        //此時:設置flag為false,然後跳出 for 循環
                        flag = false;
                        break;
                    }
                }

                //如果num是質數則輸出
                if (flag) {
                    alert(num + '是質數!!!');
                } else {
                    alert('這個不是質數');
                }
            }
        </script>
    </head>

    <body></body>
</html>

方法二 代碼實現:

//方法一的簡化
var num = parseInt(prompt("輸入一個數字"))
            for (var i = 2; i < num / 2 + 1; i++) {
                if (num % i == 0) {
                    alert("不是質數")
                } else {
                    alert("是質數")
                }
                break;
            }

方法三 代碼實現:

 //思路:質數只有1和它本身兩個因數,所以只需判斷因數的個數就可以確定是不是質數
var num2 = parseInt(prompt("輸入一個數字"))
                var count = 0  //用來統計因數的個數
                for (var i = 1; i <= num2; i++) {
        
                    if (num2 % i == 0) {
                        console.log(i)
                        count++
                    }  
                }
                console.log(count)
                if (count == 2) {
                    alert("是質數")
                }

練習二:質數相關

題目:打印 1~100 之間的所有質數

代碼實現:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title></title>
        <script type="text/javascript">
            /*
             * 打印出1-100之間所有的質數
             */

            //打印2-100之間所有的數
            for (let i = 2; i <= 100; i++) {
                //創建一個布爾值,用來保存結果,默認i是質數
                let flag = true;

                //判斷i是否是質數
                //獲取到2-i之間的所有的數
                for (let j = 2; j < i; j++) {
                    //判斷i是否能被j整除
                    if (i % j == 0) {
                        //如果進入判斷則證明i不是質數,修改flag值為false
                        flag = false;
                    }
                }

                //如果是質數,則打印i的值
                if (flag) {
                    console.log(i);
                }
            }
        </script>
    </head>

    <body></body>
</html>

打印結果:

練習三:99 乘法表

代碼實現:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title></title>
        <style type="text/css">
            body {
                width: 2000px;
            }

            span {
                display: inline-block;
                width: 80px;
            }
        </style>
        <script type="text/javascript">
            /*
             * 1.打印99乘法表
             *   1*1=1
             *   1*2=2 2*2=4
             *   1*3=3 2*3=6 3*3=9
             *   1*4=4 2*4=8 3*4=12 4*4=16
             *                      ....9*9=81
             *
             * 2.打印出1-100之間所有的質數
             */

            //創建外層循環,用來控制乘法表的高度
            for (let i = 1; i <= 9; i++) {
                //創建一個內層循環來控制圖形的寬度
                for (let j = 1; j <= i; j++) {
                    document.write('<span>' + j + '*' + i + '=' + i * j + '</span>');
                }

                //輸出一個換行
                document.write('<br />');
            }
        </script>
    </head>

    <body></body>
</html>

頁面效果: