数据类型的转换与数组的使用实例

1.分别使用while/do-while/for循环实现10的阶乘(使用递归算法)。
2.打印九九乘法表(四种形式)
3.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
4.判断101-200之间有多少个素数,并输出所有素数(只能被1和它本身整除的自然数为素数)
5.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方
6.将一个正整数分解质因数。例如:输入90,打印出90=233*5。
7.求任意两个正整数的最大公约数和(GCD)和最小公倍数(LCM)
8.求1000以内的完全数(若一个自然数,恰好与除去它本身以外的一切因数的和相等,这种数叫做完全数。)


<!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>homework</title>
    <link rel="stylesheet" href="./homework.css">
</head>
<body onload="result()">
    <div id="jiecheng">
        1.分别使用while/do-while/for循环实现10的阶乘(使用递归算法)
        <div id="result1" >
            方法一:while循环
            <span id="res1"></span>
        </div>
        <div id="result1">
            方法二:do while循环
            <span id="res2"></span>
        </div>
        <div id="result1">
            方法三:for循环
            <span id="res3"></span>
        </div>
    </div>
    <script>    
        function jc(){
            // 简单的while循环
            // 获取网页中的元素
            var res1 = document.getElementById("res1");
            var i = 1;
            var a = 1;
            while(a < 10){
                a++;
                i = i * a;   
            }
            res1.innerHTML = i;
        }
        function jc2(){
            // do while循环
            // 获取网页中的元素
            var res2 = document.getElementById("res2");
            var i = 1;
            var a = 1;
            do{
                a++;
                i *= a;
            }while(a < 10)
            res2.innerHTML = i;
        }
        function jc3(){
            // for循环
            // 获取网页中的元素
            var res3 = document.getElementById("res3");
            var i = 1;
            var a = 1;
            for(;a <= 10; a++){
                i *= a;
            }
            res3.innerHTML = i;
        }
    </script>
    <div id="jiujiu">
        <div class="name">2.打印九九乘法表(四种形式)</div>
        <div id="box1" class="box">
            <div id="title1" class="name" >形式一:</div>
            <div id="con_1" class="content"></div>
        </div>
        <div id="box2" class="box">
            <div id="title2" class="name" >形式二:</div>
            <div id="con_2" class="content"></div>
        </div>
        <div id="box3" class="box">
            <div id="title3" class="name">形式三:</div>
            <div id="con_3" class="content"></div>
        </div>
        <div id="box4" class="box">
            <div id="title4" class="name" >形式四:</div>
            <div id="con_4" class="content"></div>
        </div>
    </div>
    <script>     
        function con1(){
            var res ; 
            var con_1 = document.getElementById("con_1");
            var min = 0;
            for (var i = 1; i <= 9; i++) {          
                for (var a = 1; a <= 9; a++) {
                    if(a <= min){
                        var numbox = document.createElement("div");
                        numbox.className = "numbox";
                        numbox.innerHTML = "";
                        con_1.appendChild(numbox);
                    }else{
                        var numbox = document.createElement("div");
                        numbox.className = "numbox";
                        res = i * a;
                        numbox.innerHTML = i + "*" + a + "=" + res;
                        con_1.appendChild(numbox);
                    }
                }  
                min ++;  
            }
        }
        function con2(){
            var res ; 
            var con_2 = document.getElementById("con_2");
            var min = 0;
            for (var i = 1; i <= 9; i++) {
                for (var a = 9; a >= 1; a--) {
                    if(a > min){
                        var numbox = document.createElement("div");
                        numbox.className = "numbox";
                        res = i * a;
                        numbox.innerHTML = i + "*" + a + "=" + res;
                        con_2.appendChild(numbox);
                    }else{
                        var numbox = document.createElement("div");
                        numbox.className = "numbox";
                        numbox.innerHTML = "";
                        con_2.appendChild(numbox);
                    }
                }  
                min ++;  
            }
        }
        function con3(){
            var res ; 
            var con_3 = document.getElementById("con_3");
            var min = 9;
            for (var i = 9; i >= 1 ; i--) {
                for (var a = 9; a >= 1; a--) {
                    if(a >= min){
                        var numbox = document.createElement("div");
                        numbox.className = "numbox";
                        res = i * a;
                        numbox.innerHTML = i + "*" + a + "=" + res;
                        con_3.appendChild(numbox);
                    }else{
                        var numbox = document.createElement("div");
                        numbox.className = "numbox";
                        numbox.innerHTML = "";
                        con_3.appendChild(numbox);
                    }
                }  
                min --;  
            }
        }
        function con4(){
            var res ; 
            var con_4 = document.getElementById("con_4");
            var max = 9;
            for (var i = 9; i >= 1 ; i--) {
                for (var a = 1; a <= 9; a++) {
                    if(a >= max){
                        var numbox = document.createElement("div");
                        numbox.className = "numbox";
                        res = i * a;
                        numbox.innerHTML = i + "*" + a + "=" + res;
                        con_4.appendChild(numbox);
                    }else{
                        var numbox = document.createElement("div");
                        numbox.className = "numbox";
                        numbox.innerHTML = "";
                        con_4.appendChild(numbox);
                    }
                }  
                max --;  
            }
        }
    </script>
    <div id="reset">
        <div class="name" >有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?</div>
        <div class="content" id="re_res"></div>
    </div>
    <script>
        function reset(){
            var d = 0;
            // 获取到内容区
            var res = document.getElementById("re_res");
            // 创建一个内容为1,2,3,4
            var array = [1,2,3,4];
            for(var i = 0; i <= 3; i++){
                // 将array数组复制到arr1数组上
                // 在这里不可以直接将array赋值给arr1,因为数组内部存储的是指针,直接赋值后,无论改动哪个数组中的内容,其实都是对同一组数据做改动
                var arr1 = array.slice(0);
                // 第一步中取出的数字赋值给变量h;
                var h = arr1[i];
                // 在数组arr1中删除arr[i],删除的长度为1;
                arr1.splice(i,1);
                for(var a = 0; a <= 2; a++){
                    // 将删除数据后的arr1数组复制给arr2
                    var arr2 = arr1.slice(0);
                    // 将第二步中取出的数字赋值给inl
                    var inl = arr2[a];
                    // 在数组arr2中删除选中的数字
                    arr2.splice(a,1);
                    for(var b = 0; b <= 1;b++){
                        // 将删除数据后的arr2数组复制给arr3
                        var arr3 = arr2.slice(0);
                        // 将第三步中取出的数字赋值给nth
                        var nth = arr3[b];
                        // 创建div盒子用于放置生成的三位数
                        var numberbox = document.createElement("div");
                        numberbox.className = "numberbox";
                        // 将三个步骤中选出的数字转为数组的形式并组成结果
                        var r = h.toString() + inl.toString() + nth.toString();
                        numberbox.innerHTML ='' +  r;
                        // console.log( r);
                        // 将div盒子添加到内容区
                        res.appendChild(numberbox);
                        d ++;
                    }                   
                }              
            }
            var whole = document.createElement("div");
            whole.className = "whole";
            whole.innerHTML = "一共有" + d + "个三位数";
            res.appendChild(whole);
        }
    </script>
    <div id="sushu">
        <div class="name" >判断101-200之间有多少个素数,并输出所有素数(只能被1和它本身整除的自然数为素数)</div>
        <div class="content" id="con_ss"></div>
    </div>
    <script> 
        function sushu(){
            var num = 0;
            var content = document.getElementById("con_ss");
            var flag = 1;   
            for (var i = 101; i <= 200; i++) {
                for(var a = 2; a < (i - 1);a++){
                    if((i % a) == 0){
                        flag = 0;
                        break;
                    }else{
                        flag = 1;
                    }
                }
                // console.log(flag);
                if(flag){
                    num++;
                    var numbox = document.createElement("div");
                    numbox.className = "numberbox";
                    numbox.innerHTML = i;
                    content.appendChild(numbox);
                    flag = 1;
                    num++;
                }
            }
            var whole = document.createElement("div");
            whole.className = "whole";
            whole.innerHTML = "一共有" + num + "个素数";
            content.appendChild(whole);
        }
    </script>
    <div id="shuixianhua">
        <div class="name" >打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方</div>
        <div class="content" id="con_sxh"></div>
    </div>
    <script>
        function shuixian() {
            var w = 0;
            var content = document.getElementById("con_sxh");
            for (var i = 100; i < 1000; i++) {
                var c = i % 10;
                var a = parseInt(i / 100);
                var b = ((i - c) / 10) - (a*10);
                var num = a * a * a + b * b * b + c * c * c;
                if(i == num){
                    var numbox = document.createElement("div");
                    numbox.className = "numberbox";
                    numbox.innerHTML = i ;
                    content.appendChild(numbox);
                    w++;
                }
            }
            var whole = document.createElement("div");
            whole.className = "whole";
            whole.innerHTML = "一共有" + w + "个水仙花数";
            content.appendChild(whole);
        }
    </script>
    <div id="yinshu">
        <div class="name">将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。</div>
        <input type="number" id="in">
        <input type="submit" value="提交" onclick="yinshu()">
        <div class="content" id="con_ys"></div>
    </div>
    <script>
        function yinshu() {
            //获取元素 
            var con = document.getElementById("in");
            var content = document.getElementById("con_ys");
            // 获取输入的值
            var num = con.value;
            // 创建一个空数组以放置结果
            var array = [];
            // 创建一个判断值
            var m;
            // 创建一个判断值
            var f = 0;
            // 将输入的值转换为数字类型
            var flag = +(num);
            // 判断输入的值是否是数字&是否为正整数
            console.log(num);
            if (flag <= 0) {
                alert("请输入一个正整数!")
            }else{
                // 判断输入的数字是否存在质因数
                for(var i = 2 ; i < num ; i++){
                    if((num % i) == 0){
                        f = 1;
                    }
                }
                // 存在因数则进入循环语句
                if(f){
                    for (var i = 0; i <= num; i++) {
                        for (var a = 2; a < num; a++) {
                            if(((num % a) == 0) && (m = 1)){
                                // 将符合条件的a添加进数组array
                                array.push(a);
                                num /= a;
                                // 设置判断值m为0
                                m = 0;
                                // 判断num被除后是否存在质因数,如果存在设m为1,不存在则设为0以进入下一步
                                for (var b = 2; b < num; b++) {
                                    if ((num % b) == 0) {
                                        m = 1;
                                    }
                                }
                                // console.log(m);
                                // console.log(num);
                                console.log(array); 
                                break;
                            }
                        }
                        // 因为m=0而进入下一步
                        if (!m) {
                            // 如果num此时不为1则将其添加进array数组
                            if(num != 1){
                                array.push(num);
                                // console.log(array); 
                            }
                            // 对数组array进行冒泡排序
                            for(var i = 0;i < array.length; i++){
                                for(var j = i + 1;j <= array.length;j++){
                                    if(array[i] > array[j]){
                                        var x = array[i];
                                        array[i] = array[j];
                                        array[j] = x;
                                    }
                                }
                            }
                            // 将数组以既定格式赋值给str
                            var str = flag + "=" +array[0].toString();
                            for (var i = 1; i < array.length; i++) {
                                str = str + "*" +array[i];
                            }
                            // console.log(str);
                            // 创建div用于放置str
                            var numberbox = document.createElement("div");
                            // 清空内容区
                            content.innerHTML = "";
                            // 给创建的div赋值
                            numberbox.innerHTML = str;
                            // 将创建的div盒子放入内容区
                            content.appendChild(numberbox);
                            // 中断循环
                            break;
                        }
                    }
                //不存在质因数则直接报出结果 
                }else{
                    content.innerHTML = "";
                    alert(num + "没有质因数");
                }
            }     
        }
    </script>
    <div id="GCD_LCM">
        <div class="name">求任意两个正整数的最大公约数和(GCD)和最小公倍数(LCM)</div>
        <input type="number" id="in1">
        <input type="number" id="in2">
        <input type="button" value="提交" onclick="GL()">
        <div class="content" id="con_GL"></div>
    </div>
    <script>
        function GL() {
            var content = document.getElementById("con_GL");
            var num1 = document.getElementById("in1");
            var num2 = document.getElementById("in2");
            var n1 = +(num1.value);
            var n2 = +(num2.value);
            // 创建一个空变量用于交换数值
            var z;
            // console.log(n1);
            // console.log(n2);
            // 清空内容区
            // console.log(typeof(n1));
            // console.log(typeof(n2));
            // 判断输入的值是否是正整数,如果不是正整数则弹出提示
            if ((+(n1) <= 0) || (+(n2) <= 0)) {
                alert("请输入两个的正整数!");
            }else{
                // 使n1始终大于n2
                if(n2 > n1){
                    z = n1;
                    n1 = n2;
                    n2 = z;
                }
                    // console.log(n1);
                    // console.log(n2);
                    // 求最大公因数
                if((n1 % n2) == 0){
                    content.innerHTML = "";
                    var numberbox = document.createElement("div");
                    numberbox.innerHTML = n1 + "和" + n2 + "的最大公因数是:" + n2 + "<br>" + n1 + "和" + n2 + "的最小公约数是:" + n1;
                    content.appendChild(numberbox);
                }else{
                    // 清楚内容区
                    content.innerHTML = "";
                    // 求最大公因数
                    for (var i = n2 - 1; i >= 1; i--) {
                        console.log(i);
                        console.log(n1 % i);
                        console.log(n2 % i);
                        if ( ((n2 % i) == 0) && ((n1 % i) == 0) ) {
                            var numberbox = document.createElement("div");
                            numberbox.innerHTML = n1 + "和" + n2 + "的最大公因数是:" + i;
                            content.appendChild(numberbox);
                            break;
                        }
                    }
                    // 求最小公约数
                    for (var i = n1; i <= (n1*n2); i++) {
                        if ( ((i % n1) == 0) && ((i % n2) ==0) ) {
                            var numberbox1 = document.createElement("div");
                            numberbox1.innerHTML = n1 + "和" + n2 + "的最小公约数是:" + i;
                            content.appendChild(numberbox1);
                            break;
                        }
                        
                    }
                } 
            }
        }
    </script>
    <div id="wanquan">
        <div class="name">求1000以内的完全数(若一个自然数,恰好与除去它本身以外的一切因数的和相等,这种数叫做完全数。</div>
        <div class="content" id="con_wq"></div>
    </div>
    <script>
        function wq() {
            var res = [];
            var content = document.getElementById("con_wq");
            // 因为1的因数只有自身所以不符合条件因此循环可以从2开始
            for (var i = 2; i <= 1000; i++) {
                // 设置一个空数组用来存放数据,并初始化
                var array = [];
                // 设置变量num并初始化
                var num = 0;
                // 找出i的所有因数并将其添加进数组array中
                for (var m = 1; m < i ; m++) {
                    if ((i % m) == 0) {
                        array.push(m);  
                        // console.log(array);     
                    }
                }
                // 求所有因数的和
                for(var a = 0;a < array.length;a++){
                    num = num + array[a];
                }
                // 将因数和与i比较
                if (i == num) {
                    res.push(i);
                    // console.log(num);
                    // console.log(i);
                    // console.log("是完全数");
                    // console.log(res);
                }
            }
            for (var i = 0; i < res.length; i++) {
                var numberbox = document.createElement("div");
                numberbox.innerHTML = res[i];
                content.appendChild(numberbox);
            }
        }
    </script>
    <script>
        function result(){
            jc();
            jc2();
            jc3();
            con1();
            con2();
            con3();
            con4();
            reset();
            sushu();
            shuixian();
            wq();
        }
    </script>
</body>
</html>
/* 10的阶乘 */
#jiecheng{
    width: 1200px;
    margin: 0 auto;
    text-align: center;
}
#jiecheng div{
    cursor: pointer;
    height: 20px;
    width: 300px;
    line-height: 20px;
    position: relative;
    margin-top: 10px;
    text-align: left;
}
#jiecheng div span{
    display: block;
    height: 20px;
    line-height: 20px;
    position: absolute;
    right: 0;
    bottom: 0;
}
/* 九九乘法表 */
#jiujiu{
    width: 900px;
    height: 500px;
    margin: 0 auto;
}
.name{
    text-align: center;
    cursor: pointer;
}
#jiujiu .box{
    width: 49%;
    float: left;


}
#jiujiu .content{
    height: 200px;
    border: 1px solid black;
    box-sizing: border-box;
    padding: 5px;
}
#jiujiu .numbox{
    width: 47px;
    height: 20px;
    line-height: 20px;
    float: left;
    text-align: left;
    font-size: 14px;
}
/* 数字重组 */
.numberbox{
    width: 50px;
    height: 25px;
    line-height: 25px;
    text-align: 50px;
    float: left;
    /* background-color: #ccc; */
    padding: 0 5px;
    
}
#reset .content{
    width: 1200px;
    height: 200px;
    margin: 0 auto;
    overflow: hidden;
    /* background-color: yellow; */
}
.whole{
    width: 1200px;
    height: 50px;
    font-size: 30px;
    line-height: 50px;
    text-align: center;
    margin-top: 100px;
}
/* 判断素数 */
#sushu{
    width: 1200px;
    height: 190px;
    margin: 0 auto;
    /* background-color: #ccc; */
}
#sushu .content{
    overflow: hidden;
}
/* 水仙花 */
#shuixianhua{
    width: 1200px;
    height: 200px;
    margin: 0 auto;
}
#shuixianhua .content{
    overflow: hidden;
}
/* 分解因数 */
#yinshu{
    width: 1200px;
    height: 200px;
    margin: 0 auto;
}
#yinshu .content{
    overflow: hidden;
}
/* 公约数和公因数 */
#GCD_LCM{
    width: 1200px;
    height: 200px;
    margin: 0 auto;
}
#GCD_LCM .content{
    overflow: hidden;
}
/* 完全数 */
#wanquan{
    width: 1200px;
    height: 200px;
    margin: 0 auto;
}
#con_wq{
    margin: 0 auto;
    width: 1200px;
    height: 200px;
    overflow: hidden;
}
#con_wq div{
    float: left;
    width: 50px;
    height: 20px;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值