首页 > 其他分享 >求其最大公约数和最小公倍数,一行代码完成

求其最大公约数和最小公倍数,一行代码完成

时间:2023-12-13 21:12:52浏览次数:23  
标签:return 公倍数 求其 int 最大公约数 static public

题目:输入两个正整数 m 和 n,求其最大公约数和最小公倍数。

求出最大公约数就行,最小公倍数用m*n除以最大公约数就行

package myself;

import java.util.Scanner;

/**
 * @Auther QY
 * @Date 2023/12/11
 */
public class Six {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        int n = sc.nextInt();
        System.out.println("最大公约数:" + gcd3(m, n));
        System.out.println("最小公倍数:" + lcm(m, n));
    }

    //        最大公约数先写了容易被理解的三种
    public static int gcd1(int m, int n) {
//        m或n有一个为0就退出,返回大的
        while (m * n != 0) {
            if (m > n) {
                m %= n;
            } else {
                n %= m;
            }
        }
        if (n == 0) {
            return m;
        } else {
            return n;
        }
    }

    public static int gcd2(int m, int n) {
//        减到相同就退出
        while (m != n) {
            if (m > n) {
                m -= n;
            } else {
                n -= m;
            }
        }
        return n;
    }

    public static int gcd3(int m, int n) {
//        第一种方法的进一步优化
//        举个例子m=0,n=6;下一步就变成m=6,n=0
//        一定要后面的判断,防止除数变为0
        return n > 0 ? gcd3(n, m % n) : m;
    }

    //    最小公倍数
    public static int lcm(int m, int n) {
        return m * n / gcd3(m, n);
    }
}

gcd(a,b){
	//java写的时候要写出b>0不想c一样能用数字判断真假
	return b?gcd(b,a%b):a
}

标签:return,公倍数,求其,int,最大公约数,static,public
From: https://www.cnblogs.com/qy-blog/p/17899922.html

相关文章

  • n个数算最小公倍数(优化版)
    #include<stdio.h>intret(intx,inty){  inti=1;  if(x%y==0||y%x==0)    return(x>y?x:y);  else  {   for(i=1;i<=x*y;i++)    {      i=x*i;      if(i%y==0) ......
  • P1029 最大公约数和最小公倍数问题(普及−) 题解
    题目传送门想要做这题,我们要先了解一下最大公约数。最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号。求最大公约数有多种方法,常见的有质因数分解法、短......
  • 求四个数的最小公倍数
    #include<stdio.h>longintfact(longintx,longinty){ inti,j;  for(i=1;i<=x*y;i++) {  if(x%y==0||y%x==0)  {  returnx>y?y:x;  break;  }    j=x*i;  if(j%y==0)  {  returnj;......
  • 求两个数的最小公倍数
    #include<stdio.h>intmain(){  inti,j,k,t=0;  printf("请输入两个数:");  scanf_s("%d,%d",&i,&j);   for(k=1;k<=i*j;k++)  {       if(i%j==0||j%i==0)    {      printf("%d,%d......
  • 求两个数的最大公约数
    #include<stdio.h>intmain(){ inti,j,n=0; printf("请输入两个数:"); scanf_s("%d,%d",&i,&j);   while(i%j) {   n=i%j;   i=j;   j=n;  } printf("最大公约数为%d",n);  retu......
  • 1.两个数的最大公约数;2.输出某个范围的素数
    给定两个数,求其最大公约数#include<stdio.h>intmain(){ intm=24,n=18,r=0; while(m%n)//辗转相除法,改成"while(r=m%n)",下面的"r=m%n"可以省略 { r=m%n; m=n; n=r; } printf("%d\n",n); return0; }输出100-200内的素数#include<stdio.h>......
  • 最大公约数
    最大公约数目录最大公约数辗转相除法伪代码null辗转相除法https://zhuanlan.zhihu.com/p/324578532欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b)=gcd(b,amodb)。两个整数的最大公约数是能......
  • 求最大公约数伪代码
    欧几里得算法欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。计算方法:gcd(a,b)=gcd(b,amodb)(不妨设a>b且r=amodb,r不为0)其中gcd指最大公约数,mod指取模运算(因为操作数为正数,看成取余),伪代码里取余写作REMhttps://baike.baidu.com/item/%E6%AC%A......
  • 求最大公约数伪代码
    求最大公约数伪代码1.上网查找什么是求两个数的最大公约数的欧几里得算法(辗转相除法),提交算法说明和网上链接。欧几里得算法(辗转相除法)是求两个数的最大公约数的经典算法。其基本思想是:用较大的数除以较小的数,然后用余数作为新的被除数,继续进行操作,直到余数为0,此时的除数即为最......
  • 求最大公约数伪代码(课下测试,必做)
    1.上网查找什么是求两个数的最大公约数的欧几里得算法(辗转相除法),提交算法说明和网上链接。欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b)=gcd(b,amodb)。两个整数的最大公约数是能够同时整除它们......