js--逻辑训练题(1)

正整数分解质因数

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

通过循环 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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值