求最小公倍数 、小球走过路程计算 题目

JAVA11 求最小公倍数

描述
编写一个方法,该方法的返回值是两个不大于100的正整数的最小公倍数。
 
输入描述:
两个int类型变量作为方法的参数。
 
输出描述:
int类型的变量,值为两个数的最小公倍数。

示例:

输入:3 7
输出:21

 
 

分析:

1.两个数的最小公倍数为:两个数的乘积/最大公约数。

2.两个数不大于100。

 

代码:

求最大公约数方法:辗转相除法。

//辗转相除法
public static int getCD(int m,int n){

        if(m<n){//保持m代表的数 大。
            int temp=n;
            n=m;
            m=temp;
        }

        while(n!=0){
            int temp=n;
            n=m%n;
            m=temp;
        }
        System.out.println(m);
        return m;
    }

 
 

完整代码

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner console = new Scanner(System.in);
        int m = console.nextInt();
        int n = console.nextInt();
        int result = getCM(m, n);
        System.out.println(result);
    }

    public static int getCM(int m, int n) {

        return (m*n/getCD(m,n));


    }


    public static int getCD(int m, int n) {

        if (m < n) { //保持m代表的数 大。
            int temp = n;
            n = m;
            m = temp;
        }

        while (n != 0) {
            int temp = n;
            n = m % n;
            m = temp;
        }
        //System.out.println(m);
        return m;
    }
}

 

大佬代码:

使用循环

import java.util.*;
 
public class Main {
    public static void main(String[] args) {
        //标准输入
        Scanner console = new Scanner(System.in);
        int m = console.nextInt();
        int n = console.nextInt();
        //计算最小公倍数
        int result = getCM(m, n);
        //输出结果
        System.out.println(result);
    }
 
    //计算最小公倍数
    public static int getCM(int m, int n){
        //计算m、n中较大者
        int max=Math.max(m,n);
        //从max到m*n之间找最小公倍数
        for(int i=max;i<=m*n;i++){
            //如果既能被m整除又能被n整除,说明是最小公倍数,直接返回
            if(i%m==0&&i%n==0){
                return i;
            }
        }
        return -1;
    }
     
}

 
 

将两个数的倍数从小到大依次排列,直到出现相同的倍数。

int a = m;
int b = n;
//4 8 12 16 20
//6 12 18
while (true) {
    if (m == n) {
        break;
    } else {
        if (m < n) {
            m += a;
        } else {
            n += b;
        }
    }
}

 
 

JAVA12 小球走过路程计算

描述
一球从h米高度自由落下,每次落地后反弹回原高度的一半再落下,求它在第n次落地时共经过了多少米?第n次反弹多高?
 
输入描述:
输入小球的初始高度和落地的次数(先输入小球初始高度再输入反弹次数)。
 
输出描述:
输出小球反弹的高度和经过的距离(先输出反弹的高度再输出经过的距离,中间用空格隔开)。
结果保留三位小数,保留方式已经写在预设方法备注中。

示例:

输入:100 3
输出:12.500 250.000

 
 

分析:

1.有多少次反弹,则用h/2计算反弹距离。

2.一共经过的距离,则是计算n次反弹之前的距离。

代码:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        float h=scanner.nextFloat();
        int n =scanner.nextInt();

        double sum=h;
        for(int i=1;i<=n;i++){
            h/=2;
            if(i!=n){
                sum+=2*h;
            }

        }

        System.out.println(String.format("%.3f", h)+" "+String.format("%.3f", sum));

    }
}

  • 13
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值