JavaScript 每日一练 第二篇 答案

1.1 求100以内所有能被3和7整除的数的和

  • 题目描述:

    • 把1-100之间所有能够被3和7同时整除的数找出来,计算累加和
  • 题目提示:

    • 在算入累加和之前,使用%判定遍历到的数字是不是可以被3和7整除
    1.创建1-100 while for 
    2. 条件判断  数字%3==0 && 数字% 7==0    数字 % 21 ==0 
    3.准备一个容器 这个容器 声明的时候一定在循环外边 
    var sum = 0; // 如果和一定是整数 那么声明变量的时候 先填充0 
    // 如果在循环里边 var sum=0; 那么就是 每次循环 sum重新归零
    for(var i=1;i<=100;i++){
    	if(i % 21 ==0 ){
    		sum+=i;
    		//如果在这里打印sum 那么每次循环都会打印一次和
    	}
    }
    
    // 整个循环结束 查看sum的结果
    

1.2 将 1000 ~ 2000 之间所有的闰年输出在页面上

每四个一换行

  • 提示

    • 构建1000~2000年
    • 闰年判断
    • 需要一个计数器 每一行数量为4 第五个 就要 document.write("<br />") 换行。
    // 构建 1000 - 2000 年 
            var count = 0;
            for (var year = 1000; year <= 2000; year++) {
                // console.log(year);
                //判断1000 1001 ... 2000 每个年份是否是闰年
                if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0) {
                    document.write(year + "&nbsp;&nbsp;");
                    count++;
    
                    if(count % 4 ==0){
                         document.write("<br />")
                    }
                }
            }
    

1.3 求水仙花数字

  • 水仙花数字(三次自幂数)
    => 要求:

    1. 是一个三位数

    2. 每一位的三次方之和 和 这个数字相等

      • 例子: 153

          -> 1 * 1 * 1 + 5 * 5 * 5 +  3 * 3 * 3
          -> 1 125 27
          -> 153
        

    分析:

    1. 构建所有的三位数 100 ~ 999
    
    => 判断一个数字的 每一位的三次方之和 是否和这个数字相当
    
    2. 提取百位 十位 个位 
    
*/

188    parseInt(188 / 100)  
	    parseInt(188 %100 /10)
	    188 % 10  
	   for(var i=100;i<1000;i++){
	   		//alert(i);
	   		var h = parseInt(i / 100);  
	    	var t = parseInt(i %100 /10);
	    	var n = i % 10;
	    	if(h**3+t**3+n**3 == i){
	    		console.log(i);
	    	}
	   }

1.4 求两个数字的最大公约数

准备2个数值。max 和min

  • 约数: 能被该数字整除的数字
    • 例子: 12 的约数 1 2 3 4 6 12
  • 公约数: 能分别被两个数字整除的
    • 例子: 12 和 8 的公约数 4
  • 最大公约数: 两个数字的所有公约数内最大的那一个
    • 例子: 12 和 8 的最大公约数 4
分析:
        1. 重复做的事情是:
          	 判断一个数字是否能同时被 max 和 min 整除
             max % 数字 === 0 && min % 数字 === 0
        2. 你是否需要一组有规律的数字 ?
         		 需要
         	   公约数的最小取值    公约数的最大取值    
         	   12   8 
         	   相对小的那个数字
         	   
         	   
        # 最大公约数 一定是  两个数中最小的那个数字 
        # 12 和 8的最大公约数 最大到8 
        # 1 2 3 4 5 6 7 8
        # 1  2  4 
        # 4 
        
        
        var max = parseInt(prompt('请输入第一个数字:'));
        var min = parseInt(prompt('请输入第二个数字:'));
        var test = min<max?min:max; 
        for(var i=1;i<=test;i++){
        	if( max % i === 0 && min % i === 0){
        		console.log(i)
        	}
        }

1.5 求两个数字的最小公倍数

准备2个数值。max 和min

  • 公倍数: 能同时整除两个数字
    1.例子: 12 和 18 -> 36 72 …
    • 最小公倍数:
      2. 所有公倍数内最小的那 12 18 -> 36

分析:
       1. 你需要重复做的事情是什么 ?
          => 判断是否能整除 min 和 max
          => 数字 % min === 0 && 数字 % max === 0
        2. 你是否需要一组有规律的数字 ?
          => 公倍数的最小取值       两个数字 较大的数字
          => 公倍数的最大取值        两数的积
        3. 步长设置多少合适 ?
          => 18 的 1 倍是 18
          => 18 的 2 倍是 36
          => 因为 1 和 2 之间没有整数了, 所以 19 ~ 35 之间的所有数字一定不能整除 18
          => 18 的 3 倍是 54
          => 因为 2 和 3 之间没有整数了, 所以 37 ~ 53 之间的所有数字一定不能整除 18
          => 每次的步长都是 18 就可以了(相对较大的数字)
          
       var max = parseInt(prompt('请输入第一个数字:'));
        var min = parseInt(prompt('请输入第二个数字:'));
        var test = max > min ? max : min;
        var res = max;
        for (var i =  max * min; i >=test; i--) {
            if (i % max === 0 && i % min === 0) {
                res = i;
            }
        }
        console.log(res);
        
        
        // 用两个数的乘积 / 两个数字的最大公约数 = 两个数的最小公倍数 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值