web-8 js 算法

175 阅读4分钟
  1. 在控制台输出1~1000之中,所有能被5整除,或者被6整除的数字。

    for (var i = 1; i <= 1000; i++) {
    	if (i % 5 == 0 || i % 6 == 0) {
    		console.log(i); //5 6 10 12 15 18...
    	}
    }
            
      //封装 回调函数
    
    function getNumber() {
    	for (var i = 1; i <= 1000; i++) {
    		(i % 5 == 0 || i % 6 == 0) && console.log(i);
    	}
    }
    
    getNumber()
    

2.用户输入一个数字n,计算1+2+3+4+……n的和。

	var n = parseInt(prompt("输入"))
	var sum = 0;
	for (var i = 1; i <= n; i++) {
		sum += i;
		//sum=sum+i
	}
	console.log(sum);

3.用户输入一个数字n,计算3/2+4/3+5/4+......+(n+1)/n。

	var input = parseInt(prompt('输入'));
	var sum = 0;
	for (var n = 2; n <= input; n++) {
		sum += (n + 1) / n;
	}
	console.log(sum);

4. 用户输入一个数字,在控制台中列出它的所有约数。

	var input = parseInt(prompt('输入'));
	for (var i = 1; i <= input; i++) {
		if (input % i == 0) {
			console.log(i);
		}
	}

5.被7整除的数字,或者尾数是7的数字

	var n = 0;
	while (n < 60) {
		n++
		//个位bits 十位ten
		var bits = n % 10
		var ten = parseInt(n / 10)
		//判断包含7整除7的数
		if (n % 7 === 0 || ten === 7 || bits === 7) {
			continue;//条件成立 跳过这次 执行下面的循环
		}
		console.log(n);
	}

6.水仙花数是一种特殊的三位数,它的特点就是,每个数位的立方和,等于它本身。比如153就是水仙花数。因为:13+53+33 = 153 100~999之内,只有4个水仙花数,请编程找出来。

	for (var i = 100; i <= 999; i++) {
		// 个位bits 十位ten 百位 hundred
		var bits = i % 10;
		var ten = parseInt(i / 10) % 10;
		var hundred = parseInt(i / 100);
		//    math.pow(底数x,指数y) 计算个位十位百位的三次方
		var num = Math.pow(bits, 3) + Math.pow(ten, 3) + Math.pow(hundred, 3);
		if (num == i) {
			console.log(i);//153 370 371 407
		}
	}

8. 如果一个数恰好等于它的因数之和,则称该数为“完美数”。 例如:第1个完全数是6,它有因数1、2、3、6,除去它本身6 外,其余3个数相加,1+2+3=6。第2个完全数是28它有因数1 2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。试寻找1~10000之间的所有完美数..

            function getNumber() {

		for (var i = 1; i <= 10000; i++) {
			var sum = 0;
			for (var item of getNumberArray(i)) {
				sum += item;
			}
			sum == i && console.log(i + '完美');
		}

	}

	function getNumberArray(number) {
		var array = [];
		for (var b = 1; b < number; b++) {
			if (number % b == 0) {
				array.push(b);
			}
		}
		return array;
	}
	getNumber()

9.质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。 用户输入一个数字,判断这个数字是否是质数。

	var input = parseInt(prompt("输入"));
	var num = 0;
	for (var i = 1; i <= input; i++) {
		if (input % i == 0) {
			num++;
		}
	}
	if (num == 2) {
		console.log("质数" + num);
	} else {
		console.log("不是质数");
	}

9. 1到100之间的质数

	var flag = 0;
	for (var j = 1; j <= 100; j++) {//自然数
		for (var i = 2; i < j; i++) {//质数
			if (j % i == 0) {
				flag = 1;
				break;
			} else {
				flag = 0;
			}
		}
		if (flag == 0 && j != 1) {
			console.log(j);
		}
	}

10. 列出1~10000的所有质数

	var num = 0;
	for (var i = 1; i <= 1000; i++) {
		for (var j = 2; j < i; j++) {
			if (i % j == 0) {
				num = 1;
				break;
			} else {
				num = 0
			}
		}
		if (num == 0 && i != 1) {
			console.log(j);
		}
	}

11.苹果3元一个,鸭梨2元一个,桃子1元一个。现在想用200元买100个水果,在控制台中列出所有可能性。苹果Apple 梨pears 桃子peach

for (var apple = 0; apple <= 100; apple++) {//苹果Apple
	for (var prars = 0; prars <= 100; prars++) {//梨pears
		for (var peach = 0; peach <= 100; peach++) {
			if (apple * 3 + prars * 2 + peach * 1 === 200 && apple + prars + peach == 100) {
				console.log('苹果' + apple, '梨' + prars, '桃' + peach);
			}
		}//桃子peach
	}
}

12. 求1! + 2! + 3! + 4! + …… + 10!的和,叹号表示阶乘,如4! = 1 * 2 * 3 * 4

	function Factorial(j) {
		var num = 1;
		for (var i = 1; i <= j; i++) {
			num *= i;
		}
		console.log(num);
		return num
	}
	//调用回调函数
	var sum = 0;//声明 存放处
	for (var i = 1; i <= 10; i++) {
		sum += Factorial(i);//求和 赋给sum
	}
	console.log('1-10阶乘的和:' + sum);//4037913

13. 求一个三位数,该三位数等与其每位数字的阶乘之和.

	 function Factorial(j) {
		var num = 1;
		for (var i = 1; i <= j; i++) {
			num *= i;
		}
		// console.log(num);
		return num
	 }
	 function three(t) {
		var sum = 0;
		var bits = t % 10;
		var ten = parseInt(t / 10 % 10);
		var hundred = parseInt(t / 100 % 10);

		if (Factorial(bits) + Factorial(ten) + Factorial(hundred) == t) {
			console.log(t);
	 	}
	 }
	 for (var i = 100; i <= 999; i++) {
	 	three(i)
	 }

14. 亲密数 15. 如果整数A 的全部约数(包括1,不包括A 本身)之和等于B,且整数B 的全部约数(包括1,不包括B 本身)之和等于A,则称整数A和B是一对亲密数。求3000 以内的全部亲密数。

	 function RevNumber() {
	 	for (let i = 1; i <= 1000; i++) {
	 		for (let j = 1; j <= 1000; j++) {
	 			if (getRevNumber(i) == j && getRevNumber(j) == i) {
					console.log(i + '.' + j);

				}
			}
		}
	 }
	 function getRevNumber(number) {
	 	var sum = 0;
	 	for (let j = 1; j < number; j++) {
	 		if (number % j == 0) {
	 			sum += j
	 		}
	 	}
	 	return sum;
	 }
	 RevNumber()



打印三角形

	 function print() {
	 	var n = prompt('输入层')
	 	for (var i = 0; i < n; i++) {
	 		//n 层数 =》 i 
	 		console.log(" ".repeat(n - i - 1) + '*'.repeat(i * 2 + 1));
	 	}
	 }
	 print()