这段代码是用来求最大公约数最小公倍数的程序,采用的是辗转相除算法!(注:这段程序有不足这处,没有加以判断所有的异常情况,只是把输入的数为负处理了,但还有几种情况就是:如果两个数都是质数,则没有公约数,如有一个是质数,并且与另一个数没倍数关系则也不能处理,还是第三种情况就是两数虽然不是质数,它也可能没有最大公约数,21和20这样的数.在所有讲语言的教材中讲到的用辗转相除法算法求此问题都没有考虑到这几种情况,我们要注意这点,它只能处理有最大公约数和最小公倍数的两数!)
import java.io.*;
public class shili
{public static void main(String[] args)
{int a=0;
a:
System.out.print("请输入一个数a:");
try{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
a=Integer.parseInt(br.readLine());
}catch(IOException ex){}
int b=0;
System.out.print("请输入另一个数b:");
try
{BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
b=Integer.parseInt(br.readLine());
}catch(IOException ex){}
if(a<=0||b<=0)
System.out.println("你输入的数不合法,将会出现错误!");
int ab=a*b;
int r=0;
if(a<b)
{r=a;
b=a;
a=r;}
int i=1;
while(i!=0)
{i=a%b;
a=b;
b=i;
}
System.out.println("你输入的两数的最大公约数为:"+a);
System.out.println("你输入的两数的最小公倍数为:"+ab/a);
}
}
温馨提示:内容为网友见解,仅供参考