Java“求两个正整数的最大公约数和最小公倍数”流程图+调试+程序

题目:求两个正整数的最大公约数和最小公倍数。
基本要求:程序风格良好(使用自定义注释模板),两种以上算法解决最大公约数问题,提供友好的输入输出。
提高要求:1.三种以上算法解决两个正整数最大公约数问题。
2.求3个正整数的最大公约数和最小公倍数。
Java“求两个正整数的最大公约数和最小公倍数”流程图+调试+程序_第1张图片

程序:

import java.util.Scanner;

//计算两个整数的最大公约数、最小公倍数的方法一
public class Way1 {
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		System.out.print("请输入两个整数:");
		int m=in.nextInt();
		int n=in.nextInt();
		int max=0,min= 0;//定义最大公约数、最小公倍数
		if(m>n)//将m记为两数间的较小值
		{
		int t=m;
		m=n;
		n=t;
		}
		for(int i=1;i<=m;i++)
		{
		if(m%i==0&n%i==0)
		max=i;
		}
		min=m*n/max;
		System.out.println("最大公约数为:"+max+",最小公倍数为:"+min);
		}
}

Java“求两个正整数的最大公约数和最小公倍数”流程图+调试+程序_第2张图片

程序:

import java.util.Scanner;

//辗转相除法
//计算两个整数的最大公约数、最小公倍数的方法二
public class Way2{
    public static void main(String[] args) {
       Scanner in=new Scanner(System.in);
       System.out.print("请输入两个整数:");
       int m=in.nextInt();
       int n=in.nextInt();
       int z=m*n;//计算此时的m*n
       int max=0,min= 0;//定义最大公约数、最小公倍数
       if(m>n)//将m记为两数间的较小值
    	   {
    	   int t=m;
    	   m=n;
    	   n=t;
    	   }
       int r=n%m;
       while(m!=0)
       {   r=n%m;
    	   n=m;
    	   m=r;
       }
       max=n;
       min=z/n;
       System.out.println("最大公约数为:"+max+",最小公倍数为:"+min);
       }
}

Java“求两个正整数的最大公约数和最小公倍数”流程图+调试+程序_第3张图片

程序:

import java.util.Scanner;

//大数翻倍法
//计算两个整数的最大公约数、最小公倍数的方法三
public class Way3 {
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		System.out.print("请输入两个整数:");
		int m=in.nextInt();
		int n=in.nextInt();
		int max=0,min= 0;//定义最大公约数、最小公倍数
		if(m>n)//将m记为两数间的较小值
		{
		int t=m;
		m=n;
		n=t;
		}	
		int a=m;int b=n;
		if(n%m==0){
			max=m;
			min=n;
		}
		int c;
		while((c=n%m)!=0){
			n=m;
			m=c;
		}
		//两数互质
		if(m==1){
			max=m;
			min=a*b;
		}
		if(b%a!=0&&m!=1){
			int i=2;
			while(b*i%a!=0){
				i=i+1;
			}
			min=b*i;
			max=b*a/min;
			
		}
		System.out.println("最大公约数为:"+max+",最小公倍数为:"+min);
		}
}

Java“求两个正整数的最大公约数和最小公倍数”流程图+调试+程序_第4张图片

程序:

import java.util.Scanner;

//计算三个整数的最大公约数、最小公倍数
public class Way4 {
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		System.out.print("请输入三个整数:");
		int m=in.nextInt();
		int n=in.nextInt();
		int q=in.nextInt();
		int max=0,min= 0;
		int Max=0,Max2=0,Min= 0;//定义最大公约数、最小公倍数
		//求m,n 的最大公约数、最小公倍数
		if(m>n)//将m记为两数间的较小值
		{
		int t=m;
		m=n;
		n=t;
		}
		for(int i=1;i<=m;i++)
		{
		if(m%i==0&n%i==0)
		max=i;
		}
		min=m*n/max;
		//求max和q的最大公约数
		int l=q;
		if(q>max)//将q记为两数间的较小值
		{
		int t=max;
		max=q;
		q=t;
		}
		for(int i=1;i<=q;i++)
		{
		if(q%i==0&max%i==0)
		Max=i;
		}
		//求min和q的最小公倍数
		if(l>min)//将l记为两数间的较小值
		{
		int t=l;
		l=min;
		min=t;
		}
		for(int i=1;i<=l;i++)
		{
		if(l%i==0&min%i==0)
		Max2=i;
		}
		Min=l*min/Max2;
		System.out.println("最大公约数为:"+Max+",最小公倍数为:"+Min);
		}
}

调试及测试截屏:

输入两数为互质数:
Java“求两个正整数的最大公约数和最小公倍数”流程图+调试+程序_第5张图片

输入两数为倍数关系:
Java“求两个正整数的最大公约数和最小公倍数”流程图+调试+程序_第6张图片

输入两数非倍数关系且非互质数:
Java“求两个正整数的最大公约数和最小公倍数”流程图+调试+程序_第7张图片

输入三个数:
Java“求两个正整数的最大公约数和最小公倍数”流程图+调试+程序_第8张图片

你可能感兴趣的:(java)