最大公约数与最小公倍数

两个整数的最大公约数:

算法一:
import java.util.Scanner;
/**
*

ClassName : yt


*

Description : 最大公约数算法1


* CreateDate : 2018年9月5日 下午5:31:08
* Author : YangTingWei
* @Version : V1.0.0
* @param
*/
public class yt {
public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println("请输入两个正整数(方法一):");
    Scanner in = new Scanner(System.in);
    int a=in.nextInt();
    int b=in.nextInt();
    int oa=a;
    int ob=b;

    if(a<b)
    {
        int m;
        m=a; a=b; b=m;
    }//若a<b,将a与b的值调换,使a中的数为最大

    int r=a%b;  
    while(r!=0)
    {
        a=b;
        b=r;
        r=a%b;
    }//辗转相除法求最大公约数
    System.out.println(oa+"与"+ob+"的最大公约数是"+b);
}

}

算法二:
import java.util.Scanner;
/**
*

ClassName : yt1


*

Description : 最大公约数算法2


* CreateDate : 2018年9月5日 下午5:31:20
* Author : YangTingWei
* @Version : V1.0.0
* @param
*/
public class yt1 {
public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println("请输入两个正整数(方法二):");
    Scanner in = new Scanner(System.in);
    int a=in.nextInt();
    int b=in.nextInt();
    int oa=a;
    int ob=b;

    int d;
    if(a<b)
        d=a;
    else
        d=b;//将两者中较小数放入d

    while(d>=1)
    {
        if(a%d==0 && b%d==0)
            break;
        d--;
    }//从最大可能数递减,找出最大公约数
    System.out.println(oa+"与"+ob+"的最大公约数是"+d)
}

}

算法三:
import java.util.Scanner;

/**
*

ClassName : yt2


*

Description : 最大公约数算法3


* CreateDate : 2018年9月5日 下午5:32:43
* Author : YangTingWei
* @Version : V1.0.0
* @param
*/
public class yt2 {
public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println("请输入两个正整数(方法三):");
    Scanner in = new Scanner(System.in);
    int a=in.nextInt();
    int b=in.nextInt();

    int gcd=1,k=1;
    while(k<=a && k<=b)
    {
        if(a%k==0 && b%k==0)
            gcd=k;
        k++;
    }
    System.out.println(a+"与"+b+"的最大公约数是"+gcd);
}

}

三个正整数的最大公约数与最小公倍数:
import java.util.Scanner;

/**
*

ClassName : yt3


*

Description : 三个正整数的最大公约数与最小公倍数算法


* CreateDate : 2018年9月5日 下午5:32:58
* Author : YangTingWei
* @Version : V1.0.0
* @param
*/
public class yt3 {
public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println("请输入三个正整数:");
    Scanner in = new Scanner(System.in);
    int a=in.nextInt();
    int b=in.nextInt();
    int c=in.nextInt();

    yt(a,b,c);//求三个正整数的最大公约数
    yt1(a,b,c);//求三个正整数的最小公倍数
}//主函数结束

/**
 * <p> Title : yt </p>
 * <p> Description : 求三个正整数的最大公约数 </p>
 * CreateDate : 2018年9月5日 下午5:28:38
 * Author : YangTingWei
 * @param @param a
 * @param @param b
 * @param @param c
 * @return void
 * @throws
 */
public static void yt(int a,int b,int c){
    int r=1,k=1;
    while(k<=a && k<=b && k<c)
    {
        if(a%k==0 && b%k==0 && c%k==0)
            r=k;
        k++;
    }//求出a、b、c的公约数r
    System.out.println(a+"、"+b+"与"+c+"的最大公约数是"+r);
}


/**
 * <p> Title : yt1 </p>
 * <p> Description : 求三个正整数的最小公倍数 </p>
 * CreateDate : 2018年9月5日 下午5:29:17
 * Author : YangTingWei
 * @param @param a
 * @param @param b
 * @param @param c
 * @return void
 * @throws
 */
public static void yt1(int a,int b,int c){
    int d=getMax(a,b,c);
    int r=1,k=1;
    for(k=d;;k++)
    {
        if(k%a==0 && k%b==0 && k%c==0)
        {
            r=k;
            break;
        }
        k++;
    }  
    System.out.println(a+"、"+b+"与"+c+"的最小公倍数是"+r);
}


/**
 * <p> Title : getMax </p>
 * <p> Description : 求三个数中最大值 </p>
 * CreateDate : 2018年9月5日 下午5:29:51
 * Author : YangTingWei
 * @param @param a
 * @param @param b
 * @param @param c
 * @param @return
 * @return int
 * @throws
 */
private static int getMax(int a, int b, int c) {
    // TODO Auto-generated method stub
    int max;
    if(a<b)
        max=b;
    else 
        max=a;//求a、b中最大值

    if(max<c)
    {
        int temp;
        temp=max; max=c; c=temp;
    }//求a、b、c中最大值
    return max;
}

}

程序流程图:
算法一:
这里写图片描述
算法二:
这里写图片描述
算法三:
这里写图片描述
算法四:
这里写图片描述
这里写图片描述
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值