最大公约数和最小公倍数

package test;
import java.util.Scanner;     
public class DivisorDemo {      
 public static void main(String[] args) {          
 Scanner sc=new Scanner(System.in);          
 System.out.println("请输入两个正整数");          
 System.out.println("请输入第一个正整数");          
 int x=sc.nextInt();           
System.out.println("请输入第二个正整数");          
 int y=sc.nextInt();           
maxDivisorMinMultiple mdmm=new maxDivisorMinMultiple(x,y);          
 int maxDivisor=mdmm.maxDivisor(x,y);           
int minMultiple=mdmm.minMultiple(x,y);          
 System.out.println("最大公约数是:"+maxDivisor);           
System.out.println("最小公倍数是:"+minMultiple);      
 }  
}     
class maxDivisorMinMultiple{       
private int m,n;      
 private int divisor, multiple;//定义公约数和公倍数       
public maxDivisorMinMultiple(int m,int n){          
 if(m>n){ //用m记录住最大数,用于计算最小公倍数和最大公约数              
 this.m=m;              
 this.n=n;          
 }else{               
this.m=n;               
this.n=m;          
 }      
 }              
public int maxDivisor(int m,int n){           
for(int x=n; x>=1;x--){ //通过观察得知最大公约数必须是小于或等于两个数的最小数n,而且必须大于等于1              
 if(n%x==0&&m%x==0){ //如果n、m能被同一个数整除,那么x就是n、m的公约数                  
 divisor=x;                   
break;//跳出循环获取最大的公约数              
 }          
 }          
 return divisor;      
 }             
 public int minMultiple(int m,int n){           
for(int x=m; x>=1; x++)//通过观察发现最小公倍数大于或者等于最大数m          
 {              
 if(x%n==0&&x%m==0){ //如果x能被n、m同时整除,那么x就是n、m的公倍数                  
 multiple=x;                   
break;//跳出循环获取做小的公倍数              
 }                          
}          
 return multiple;      
 }  
}  
posted on 2018-04-10 21:05  '大大'  阅读(155)  评论(1编辑  收藏  举报