循环基础算法题(计算当前日期、判断素数、水仙花数以及分解质因数)

1、 计算当前日期的是星期几的功能注:设定1900年1月1日为周一

我们来拆分一下题目,明确题意。

(1)、 计算当前日期

(2)、星期几

(3)、1900年1月1日为周一

根据这三个条件,我们可以看出要求的分别为那一年、那一月、那一日。得到如下代码:

想要计算一年有多少天,首先要判断的为这一年为闰年还是平年,因为闰年的二月比平年的二月多一天。闰年可以被4整除,并且不能被100整除,或者可以被四百整除。由此可以得到如下代码:

 

然后我们计算当前日期为这一年的第多少天。

再计算从1900年开始,到现在一个有多少天

最后,判断今天为星期几

让我们来看一下完整代码:

<script type="text/javascript">
    function act(){
        var year = Number(prompt("请输入年份:"));
        var month = Number(prompt("请输入月份:"));
        var days = Number(prompt("请输入日期:"));
        var isRun  = (year%4==0 && year%100!=0)||year%400 ==0; //判断是否为闰年
        var totals=0;
        var i = 1;              //循环变量
        while(i<month){         //循环变量的条件       计算前面一共有多少天
            switch (i) {
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                    totals +=31;
                    break;
                case 2:             //根据年份判断二月有多少天
                    if(isRun){
                        totals +=29;
                    }else{
                        totals +=28;
                    }
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    totals += 30;
                    break;
            }
            i++;               //循环变量的变化
        }
        totals += days;        //将之前月份的天数和当前天数相加
            console.log('今天是'+ year+"年的第"+ totals +"天");
            for(var j = 1900;j<year;j++){              //计算从1900开始到现在一共多少天
                if((j%4==0 && j%100!=0)||j%400==0){    //判断是否为闰年
                    totals +=366;
                }else{
                    totals +=365;
                }
            }
            console.log('从1900年到现在一共'+totals+"天");
            var week = totals % 7;                     //判断今天为星期几
            var msg = "星期";
            switch (week) {
                case 0:
                    msg +="日";
                    break;
                case 1:
                    msg +="一";
                    break;
                case 2:
                    msg +="二";
                    break;
                case 3:
                    msg +="三";
                    break;
                case 4:
                    msg +="四";
                    break;
                case 5:
                    msg +="五";
                    break;
                case 6:
                    msg +="六";
                    break;
            }
            console.log('今天'+msg);
    }
    act();
    </script>

运行效果:

2判断101-200之间有多少个素数,并输出所有素数。 

素数是什么?是只有1和它本身才整除的数,由此我们可以写出如下代码

效果图如下:

3.打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。  

分析题目,

(1)、一个三位数

(2)、各位数字立方和等于本身

这题关键在于将个、十、百、三位上的数字拆分,见如下代码

运行效果如下:

4.将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 

分析题目:

(1)、对n进行分解质因数,应先找到一个最小的质数k

(2)、如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(3)、如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步

(4)、如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

代码如下:

运行效果如下图:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值