js--逻辑训练题(1)

mac2026-05-22  5

正整数分解质因数

分析:质因数–能整除给定正整数的质数,将给定的正整数分解为不能再分解的整数

通过循环 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条件的,最后输出的就是最大的公约数 最后根据公式计算最大公倍数。

最新回复(0)