正整数分解质因数
分析:质因数–能整除给定正整数的质数,将给定的正整数分解为不能再分解的整数
通过循环 i -----(一个数的质因数的范围,大于2,并且小于等于他自身 2 <= i <= user)
首先判断 user的质因数 是否等于他本身,如果等于,则结束循环,如果不等于,则进入下个循环,循环 除以 这个数 即 user = user / i,直至这个数不能再被再被整除 即 user % i != 0,跳出循环
var user = parseInt(prompt("请输入一个正整数:"));
document.write(user+"=");
for(var i = 2;i <=user;i++)
{
if(i == user){
document.write(1+"*"+i);
}else{
while (user % i == 0)
{
user = user / i;
if(i!=user){
document.write(i+"*");
}else {
document.write(i);
}
}
}
//例如:输入90,输出:90 = 2*3*3*5
外层循环是,循环找出质子,内层循环是,将给定的数,不停地整除,分解,再赋给他自身,在进行循环找出所有的质因数。
求出两个整数的最大公约数和最小公倍数
分析:最大公约数,是指这两个数能够同时整除的 i中,最大的i 即为最大公约数,而最小公倍数数学定义中就是,两个数能够各自乘上一个数后能得到相等的数,其中最小的相等的数,就是最小公倍数,即 *两数相乘且除以最大公约数,就为最小公倍数 *。
var user_num1=parseInt(prompt("请输入一个人正整数:"));
var user_num2=parseInt(prompt("请再输入一个人正整数:"));
var max
if ( user_num2 >= user_num1){
max=user_num2
} else{
max=user_num1;
}
for(var i = 1;i <= max;i ++){
if(user_num2 % i == 0 && user_num1 % i == 0)
// 同时满足两者的取余相等的i
{
var divisor_num = i; //公约数,不断赋值,直至最大
}
}
console.log("最大公约数为:"+divisor_num);
var result =(user_num2 * user_num1) / divisor_num;
console.log('最小公倍数为:'+result);
首先判断 两个数中最大的那个数,作为 i 的取值范围
满足if条件的,最后输出的就是最大的公约数
最后根据公式计算最大公倍数。