求最大公约数
从输入框 输入两个数据 求这两个数据的最大公约数
区分 两个数值的 大 小
大 可以 整除 小
小的数值 就是 最大公约数
大 不能 整除 小
小的数值 每次 累减1
第一个 可以同时 被大数 和 小数整除的数值 就是 最大公约束
var m = window.prompt('请输入数据:')
var n = window.prompt('请输入数据:')
var max_num;
var min_num ;
var result = 0;
if (m < n) {
max_num = n;
min_num = m;
}
else{
max_num=m;
min_num=n;
}
// 大 可以 整除 小
if (max_num % min_num === 0) {
// 小的数值 就是 最大公约数
result = min_num
}
// 大 不能 整除 小
else {
// 小的数值 每次 累减1
// 第一个 可以同时 被大数 和 小数整除 的数值 就是 最大公约数
temp = min_num - 1;
while (temp>=1) {
if (max_num % temp == 0 && min_num % temp == 0) {
result = temp;
break;
}
temp = temp - 1;
}
}
console.log(`${m}和${n}的最大公约数是${result}`);
简写
var m = window.prompt('请输入数据:')
var n = window.prompt('请输入数据:')
max_num = m;
min_num = n;
if (m < n) {
max_num = n;
min_num = m;
}
temp = min_num;
while (temp >= 1) {
if (max_num % temp == 0 && min_num % temp == 0) {
console.log(`${m}和${n}的最大公约数是${temp}`);
break;
}
temp--;
}
再简写
var m = window.prompt('请输入数据:')
var n = window.prompt('请输入数据:')
// temp是m n 中的最小的
temp = m<n?m:n;
while (temp >= 1) {
if (m % temp == 0 && n % temp == 0) {
console.log(`${m}和${n}的最大公约数是${temp}`);
break;
}
temp--;
}
var m = window.prompt('请输入数据:')
var n = window.prompt('请输入数据:')
// 3 12的最大公约数是3 3 7的最大公约数1
var temp = Math.min(m,n)
for(var i=temp;i>0;i--){
if(m%i===0 && n%i===0){
break
}
}
console.log(i)
辗转相除法
function f11() {
var m = window.prompt('请输入数据:') //6
var n = window.prompt('请输入数据:') //8
// m存最大的,n存最小的
if(m<n){
var temp = m;
m = n;
n = temp;
}
// 如果m整除n,n就是最大公约数
// 如果m不整除n, m变为n,n变为余数,继续循环,直到m整除n
while(m%n!=0){
var temp = m%n
m = n
n = temp
}
console.log(n)
return n
}
f11()