求两个整数的最大公约数与最小公倍数

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

方法一:

public class ZuiDaoGongYueShuYuZuiXiaoGongBeiShu {

  public static void main(String[] args) {

    Scanner scanner=new Scanner(System.in);
    System.out.println("请输入第一个整数m: ");
    int m=scanner.nextInt();
    System.out.println("请输入第二个整数n: ");
    int n=scanner.nextInt();

    int max = (m > n) ? m : n;
    int min = (m < n) ? m : n;

    //最大公约数
    for(int i =min;i >= 1;i--){
      if( m % i == 0 && n % i ==0){
        System.out.println(i);
        break;
      }
    }

    //最小公倍数
    for(int i = max;i <= m * n;i++){
      if(i % m == 0 && i % n == 0){
        System.out.println(i);
        break;
      }
    }

  }

}

方法二:

/**在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较*小的数的值为0,返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。* /

public    class    
lianxi06     {
  public static void main(String[] args) {
    int     a ,b,m;
    Scanner s = new Scanner(System.in);
    System.out.print( "键入一个整数: ");
    a = s.nextInt();
    System.out.print( "再键入一个整数: ");
    b = s.nextInt();
         deff cd = new deff();
         m = cd.deff(a,b);
         int n = a * b / m;
           System.out.println("最大公约数: " + m);
           System.out.println("最小公倍数: " + n);
   }
}
class deff{
  public int deff(int x, int y) {
       int t;
       if(x < y) {
          t = x;
          x = y;
          y = t;
       }  
       while(y != 0) {
          if(x == y) return x;
          else {
             int k = x % y;
             x = y;
             y = k;
          }
       }
       return x;
  }
}

或者这样写:

class Test{
  public static void main(String[] args){
    System.out.print("请输入两个正整数:");
    Scanner scan = new Scanner(System.in);
    int a = scan.nextInt();
    int b = scan.nextInt();

    if(a < b) //确保a是大的数
      a = (a + b) - (b = a);

    int m = a;
    int n = b;

    while(a % b != 0){
      int iTemp = a;
      a = b;
      b = iTemp % b;
    }

    System.out.println(m + "和" + n + "的最大公约数为:" + b);
    System.out.println(m + "和" + n + "的最小公倍数为:" + m*n/b);
  }
}

时间: 2024-10-11 04:20:18

求两个整数的最大公约数与最小公倍数的相关文章

002:求两个整数的最大公约数和最小公倍数

求最大公约数可采用辗转相除法,其流程如图所示. 最小公倍数就是两个整数的乘积除以其最大公约数. 1 #include <stdio.h> 2 3 int main() 4 { 5 unsigned long a, b, c=0; //两个整数和临时变量 6 unsigned long lcm=0, gcd=0; //最小公倍数和最大公约数 7 8 while( 1 ) 9 { 10 printf("Please input two positive integers(spacebar

求两个整数的最大公约数和最小公倍数

//求最大公约数是用辗转相除法,最小公倍数是根据公式 m,n 的 最大公约数* m,n最小公倍数 = m*n 来计算 #include<stdio.h> //将两个整数升序排列 void ascNum(int *p1,int *p2) { int temp; if(*p1 > *p2) { temp = *p2; *p2 = *p1; *p1 = temp; } } //求两个整数的最大公约数 辗转相除法 int getAppr(int a, int b) { int c; ascNum

C++求两个整数的最大公约数和最小公倍数

最小公倍数=两个整数的成绩 / 最大公约数 求最大公约数的方法: (1)辗转相除法 1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 int a,b,tmp,m; 6 cin>>a>>b; 7 m=a*b; 8 if(a<b) 9 { 10 tmp=b; 11 b=a; 12 a=tmp; 13 } 14 while(b!=0) 15 { 16 tmp=a%b; 17 a=b; 18 b

写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。

题目描述 输入 两个数 输出 最大公约数 最小公倍数 样例输入 6 15 样例输出 3 30 代码:#include<stdio.h>int gys(int a,int b){    while(a%b!=0)    {        int t;        t=a%b;        a=b;        b=t;        }        return b;    }int gbs(int a,int b){     return a*b/gys(a,b);    }int m

求两个整数的最大公约数

<C和指针>第7章第2道编程题: 两个整型值M和N(M.N均大于0)的最大公约数可以按照下面的方法计算: 请编写一个名叫gcd的函数,它接受两个整型参数,并返回这两个数的最大公约数.如果这两个参数中的任何一个不大于零,函数返回零. 1 /* 2 ** 求两个整数的最大公约数 3 */ 4 5 #include <stdio.h> 6 7 int gcd( int M, int N ); 8 9 int 10 main() 11 { 12 int m, n; 13 scanf( &q

求两个正整数的最大公约数和最小公倍数(java)

1 package com.hpu.bai; 2 3 import java.util.Scanner; 4 5 public class Common { 6 public int mincom(int m,int n){ 7 int temp;int t = 0; 8 if(m<n){ 9 temp = n; 10 n =m; 11 m =temp; 12 } 13 if(m%n ==0) return n; 14 else 15 return mincom(m-n,n); 16 } 17

c语言编程求两个整数的最大公约数(两种方法)

第一种(for循环) #include <stdio.h> #include <stdlib.h> int main() { int i, min, k, a, b; printf("请输入两个整数:\n"); scanf("%d%d", &a, &b); if (a>b)//此处if else语句可以删除(只是为了少执行几步程序) min = b; else min = a; for (i = min; i>0;

计算两个整数的最大公约数和最小公倍数

算法一 任何>1的整数都可以写成一个或多个素数因子乘积的形式,且素数乘积因子以非递减序出现. 则整数x,y可以分别标记为:x=p1x1p2x2...pmxm y=p1y1p2y2...pmym (其中p1,p2,....是素数,若有必要素数因子的指数xj或yj可以为0) (1)最大公约数 gcd(x,y)=p1min(x1,y1)p2min(x2,y2)...pmmin(xm,ym) (2)最小公倍数 lcm(x,y)=p1max(x1,y1)p2max(x2,y2)...pmmax(xm,ym

求两个数的最大最大公约数和最小公倍数

package java;    import java.util.ArrayList;  import java.util.List;  import java.util.Scanner;    public class java {      /**      * 输入两个正整数m和n,求其最大公约数和最小公倍数      */      public static void main(String args[]) {          // List<Integer> list=new