js基础——一些for/while循环的例子

1.左直角等边三角形

//1.左直角等边三角形
function circle(){
  for (let i = 1; i <= 5; i++) {
    for (let j = 1; j <= i; j++) {
        document.write('⭕');
    }
    document.write('<br/>');
  }
}
circle();

2.九九乘法表

// 2.九九乘法表
function multiplicationTable(){
  for (let i = 1; i <= 9; i++) {
    for (let j = 1; j <= i; j++) {
        document.write(j + '*' + i + '=' + (i * j) + ' ');
    }
    document.write('<br/>');
  }
}
multiplicationTable();

3.有15升水 桶里最多装50 每次能接5升 问需要多少次能装满

function getWater(){
  let k = 0
  for (; (15 + k * 5) < 50; k++) { }
  console.log(k)
}
getWater();

4.判断一个数是不是质数

// 4.判断一个数是不是质数
function isPrime(num){
  for (let i = 2; i < num; i++) {
    if (num % i == 0) {
      console.log(`${num}不是个质数`)
      return false
    }
  }
  console.log(`${num}是个质数`)
  return true
}
isPrime(13);
isPrime(8);

5.三位数 水仙花数 153 = 1^1 + 5^5 + 3^3

// 5. 三位数 水仙花数 153 = 1^1 + 5^5 + 3^3
function narcissus(){
  for (let i = 100; i < 1000; i++) {
    let a = parseInt(i / 100);
    let b = parseInt(i / 10) % 10;
    let c = i % 10;
    if (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3) == i) {
        console.log(`${i}是个水仙花数`)
    }
  }
}
narcissus();

6.64格,第一个放一粒麦子,后面的放前面的双倍,问放满时需要多少颗粒粮食

// 6. 64格,第一个放一粒麦子,后面的放前面的双倍,问放满时需要多少颗粒粮食
function food(){
  var n = 1;
  var sumV = 0;
  for (let i = 0; i < 64; i++) {
    sumV += n;
    n *= 2;
  }
  console.log(sumV);
}
food();

7.最大公约数

/* 
  7. 最大公约数 : 这里我的思路是从最小公约数判断,但其实这样无用计算多
  最好的是从两个数中最小的数开始,每除一次减一,直到能除尽
  既然不知道循环次数,就可以用死循环直到找到合适的数再跳出,用while比较合适
*/
function commonDivisor(n1,n2){
  var min = n1 > n2 ? n2 : n1;

  /* // 从1开始算最大公约数的思路
  var gcd = 1;
  for (let i = 1; i <= min; i++) {
    if (n1 % i == 0 && n2 % i == 0) {
        gcd = i;
    }
  }
  console.log(`${n1}和${n2}的最大公约数是${gcd}`)
  */
  while (1) {
    if (n1 % min == 0 && n2 % min == 0) {
        break;
    }
    min--;
  }
  console.log(`${n1}${n2}的最大公约数是${min}`)
}
commonDivisor(5,6);

8.最小公倍数

// 8. 最小公倍数
function commonMultiple(num1,num2){
  var max = num1 > num2 ? num1 : num2;
  while (1) {
    if (max % num1 == 0 && max % num2 == 0) {
        break;
    }
    max++;
  }
  console.log(`${num1}${num2}的最大公约数是${max}`)
}
commonMultiple(4,5);

9.输入两个数n,a
n==3; a==2;输出2+22+222的值
n==4; a==3;输出3+33+333的值

/* 
  9.输入两个数n,a
  如n==3, a==2;输出2+22+222的值
  如n==4, a==3;输出3+33+333的值
*/

function compute(n,a){
  var tmp = a;
  var sumValue = 0;
  for (var i = 0; i < n; i++) {
    sumValue += tmp;
    tmp = tmp * 10 + a;
  }
  console.log(sumValue)
}
compute(4,3)

10.找出10000-19999中的回文数

// 10.找出10000-19999中的回文数 如:12321
function palindromeNumber(){
  for (let i = 10000; i < 19999; i++) {  
    let ind = i % 10;
    let ten = parseInt(i / 10) % 10;
    let tho = parseInt(i / 1000) % 10;
    let myr = parseInt(i / 10000);
    if (ind == myr && ten == tho) {
        console.log(`${i}是回文数`)
    }
  }
}
// palindromeNumber();

11.输入n为偶数时,调用函数1/2+1/4+…+1/n;输入n为奇数时,调用函数1+1/3+1/5+…+1/n;

// 11. 输入n为偶数时,调用函数1/2+1/4+...+1/n;输入n为奇数时,调用函数1+1/3+1/5+...+1/n;
function sum(n){
  var total = 0;
  if(n % 2==0){
    for(let i=2; i<=n; i+=2){
      total += 1/i;
    }
  }else{
    for(let i=1; i<=n; i+=2){
      total += 1/i;
    }
  }
  console.log(total);
  return total;
}      
sum(3);
sum(4);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值