1.输入两个数,找出他们的最大公约数和最小公倍数
(循环)方法一:

var num1 = Number(prompt("请输入第一个数:"));
var num2 = Number(prompt("请输入第二个数:"));
var max = num1 > num2 ? num1 : num2
var min = num1 < num2 ? num1 : num2
while (1) {
var t = min;
min = max % min;
max = t;
if (min == 0) {
break;
}
}
console.log(num1 + "和" + num2 + "的最大公约数是:" + max)
min = (num1 * num2) / max; // 最小公倍数
console.log(num1 + "和" + num2 + "的最小公倍数是:" + min);
(循环)方法二:
var a = Number(prompt("请输入第一个数"));
var b = Number(prompt("请输入第二个数"));
// 最小公倍数
for (var i = a; i <= a * b; i++) {
if (i % a == 0 && i % b == 0) {
console.log(i);
break;
}
}
// 最大公约数
for (var j = a; j >= 1; j--) {
if (a % j == 0 && b % j == 0) {
console.log(j);
break;
}
}
(函数递归) 方法三:
// 最大公约数
function gcd(m, n) {
var min = m < n ? m : n
var max = m > n ? m : n
var t = min
min = max % min
max = t
if (min != 0) {
return gcd(min, max)
} else {
return max
}
}
// 最小公倍数
function lcm(m, n) {
return m * n / gcd(m, n)
}
var m = +prompt("请输入第一个数");
var n = +prompt("请输入第二个数");
console.log("最大公约数是:" + gcd(m, n));
console.log("最小公倍数是:" + lcm(m, n));
2.有数字0,1,2,3,4五个字,可以组成多少个无重复的四位数(第一个数不是0)
穷举法:
var sum = 0;
for (var i = 1; i < 5; i++) {
// 取千位数
for (var j = 0; j < 5; j++) {
// 百位数
for (var k = 0; k < 5; k++) {
// 取十位数
for (var l = 0; l < 5; l++) {
// 取个位数
if (i != j && i != k && i != l && j != k && j != l && k != l) {
sum += 1;
}
}
}
}
}
console.log(sum);
3.找出0-100之间的质数
方法一:
for (var i = 2; i <= 100; i++) {
var f = 1
for (var j = 2; j < i; j++) {
if (i % j == 0) {
f = 0
}
}
if (f) {
console.log(i);
}
}
方法二:
for (var i = 2; i < 100; i++) {
for (var j = 2; j < i; j++) {
if (i % j == 0) {
break;
}
}
// 代表内循环结束
if (i == j) {
console.log(i);
}
}
4.把一个球从100米高空扔下,每次落地会反弹原高度的一半,问10次之后这个球一共运动了多少米
方法一(以一下一上为一个轮回100+50 + 50+25 +25+12.5...):
var h = 100
var sum = 0
for (var i = 1; i <= 10; i++) {
sum += h
h = h / 2
sum += h
}
console.log("10次之后这个球一共运动了" + sum + "米");
方法二(以一上一下为一个轮回,注意第一次的上没有100 +50+50 +25+25):
var sum = 100;
var height = 100;
for (var i = 0; i < 9; i++) {
sum += height;
height /= 2;
}
console.log(sum);
5.找出100~1000所有的水仙花数 (153=1*1*1+5*5*5+3*3*3)
方法一(穷举法):
for (var i = 1; i < 10; i++) {
for (var j = 0; j < 10; j++) {
for (var k = 0; k < 10; k++) {
if (i * i * i + j * j * j + k * k * k == i + "" + j + "" + k) {
console.log(i + "" + j + "" + k);
}
}
}
}
方法二(去除每一位上的数):
var a, b, c;
for (var i = 100; i < 1000; i++) {
a = parseInt(i / 100);
b = parseInt((i / 10) % 10);
c = parseInt(i % 10);
if (i == a * a * a + b * b * b + c * c * c) {
console.log(i);
}
}
6.百马百担问题,有100匹马,驮100担货,大马驮3担,中马驮2担,2匹小马驮1担,求大、中、小各多少匹?
方法一:
for (var i = 0; i < 100; i++) {
for (var j = 0; j < 100; j++) {
for (var k = 0; k < 100; k++) {
if ((i + j + k == 100) && (i * 3 + j * 2 + k / 2 == 100)) {
console.log(i, j, k);
}
}
}
}
方法二:
for(x=0;x<=33;x++){
for(y=0;y<=50;y++){
for(