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

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 ArrayList<>();  
        Scanner scan = new Scanner(System.in);  
        while (true) {  
            List<Integer> list1 = new ArrayList<>();  
            List<Integer> list2 = new ArrayList<>();  
            List<Integer> list3 = new ArrayList<>();  
            System.out.println("输入两个整数");  
            int a = scan.nextInt();  
            int b = scan.nextInt();  
            int s=a;  
            int s1=b;  
            for (int i = 2; i <= a; i++) {  
                while (a % i == 0) {  
                    a = a / i;  
                    list1.add(i);  
                }  
            }  
            for (int i = 2; i <= b; i++) {  
                while (b % i == 0) {  
                    list2.add(i);  
                    b = b / i;  
                }  
            }  
            for (int i = 0; i < list1.size(); i++) {  
                for (int j = 0; j < list2.size(); j++) {  
  
                    if (list1.get(i).equals(list2.get(j))) {  
                        list3.add(list1.get(i));// 最大公约数  
                        list2.remove(j);  
                        break;  
                    }  
                }  
            }  
            int sum = 1;  
            System.out.print("这两个数的最大公约数为:");  
            for (int i = 0; i < list3.size(); i++) {  
                sum = sum * list3.get(i);  
                if(i<list3.size()-1)  
                {  
                System.out.print(list3.get(i)+"*");  
                }  
                else  
                {  
                    System.out.print(list3.get(i)+"=");  
                }  
            }  
                 System.out.println(sum);      
                //由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积  
                 System.out.println("这两个数的最小公倍数为:"+(s*s1)/sum);  
        }  
          
    }  
}

原文地址:https://www.cnblogs.com/4910yxq/p/8783294.html

时间: 2024-11-07 23:54:42

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

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

求两个正整数的最大公约数和最小公倍数(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

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

//求最大公约数是用辗转相除法,最小公倍数是根据公式 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

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

//输入两个正整数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(&

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

题目描述 输入 两个数 输出 最大公约数 最小公倍数 样例输入 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++求两个整数的最大公约数和最小公倍数

最小公倍数=两个整数的成绩 / 最大公约数 求最大公约数的方法: (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

写一个方法,求两个数的最大公约数和最小公倍数。

package homework0702; /* * 最大公约数 利用辗转相除法求解两个正整数的最大公约数 在循环中,只要除数不等于0,用较大的数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环较小的数,如此循环直到较小的数值为0,返回较大的数.即为最大公约数. 辗转相除法(欧几里得算法) 定理:两个整数的最大公约数等于其中较小的那个数和两数的相除余数的最大公约数.最大公约数(greatest common divisor)缩写为gcd. 最小公倍数 最小公倍数 = (a

求两个数的最大公约数

求两个数的最大公约数 问题:给定两个正整数a和b,求他们的最大公约数. 最简单的方法就是穷举法,如果a>b,那么依次计算1~b的所有整数是否是a和b的公约数. public static void main(String[] args) { long timer = System.currentTimeMillis(); System.out.println(getGCB(1000234234,1242342390)); System.out.println(System.currentTime

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

import java.util.Scanner; //求两个数的最大公约数,最小共倍数. public class CommonMaxDivisor { public static void main(String[] args){ Scanner scanner=new Scanner(System.in); int m=scanner.nextInt(); int n=scanner.nextInt(); scanner.close(); CommonMaxDivisor cmd=new