计算最大公约数和最小公倍数(遍历)

这篇博客展示了两种在Java中计算两个数最大公约数(GCD)和最小公倍数(LCM)的方法。第一种方法是完全遍历,从1到较小数进行遍历,直到找到公约数;第二种方法是部分遍历,从较大数开始向下遍历,一旦找到公约数即停止。这两种方法都在循环中实现,用户可以选择继续输入新的数字对进行计算或退出程序。
摘要由CSDN通过智能技术生成

第一种:从小到大完全遍历

import java.util.Scanner ;
public class Test1 {
	public static void main ( String [ ] args ){ 
	Scanner scan = new Scanner ( System.in ) ;
	System.out.println("输入两个数n m ,结果分别返回n m的最大公约数和最小公倍数") ;
	while( true ) { //等价于for(;;)
	int n = scan.nextInt( ) ;
	int m = scan.nextInt( ) ;
	int a = 0 ; //a是最大公约数计数器
	int b = 0 ; //b是最小公倍数计数器
	int min1 = (n>=n)? n:m ;
	  for( int i = 1 ; i<= min1 ; i++){
	if( n%i == 0){
	   if( m%i == 0 )
	     a = i ;
}
}	System.out.println( "最大公约数为" + a ) ;
	b = (n/a) * (m/a) * a ;
	System.out.println( "最小公倍数为" + b ) ;
	System.out.println(" 输入J继续,输入T退出") ;
	String ee1 = scan.next( ) ;
	char tt1 = ee1.charAt(0) ;
	  if ( tt1 == 'T' )  System.exit(0) ;
	System.out.println("******************************************"+'\n'+'\n'+'\n'+'\n'+"重新输入n m") ;
}
}
}

运行结果

第二种:部分遍历,找到结果就break

import java.util.Scanner ;
public class Test1 {
	public static void main ( String [ ] args ){ 
	Scanner scan = new Scanner ( System.in ) ;
	System.out.println("输入两个数n m ,结果分别返回n m的最大公约数和最小公倍数") ;
	int f = 1 ;
	while( f>0 ) {
	int n = scan.nextInt( ) ;
	int m = scan.nextInt( ) ;
	int a = 0 ; //a是最大公约数计数器
	int b = 0 ; //b是最小公倍数计数器
	int min = (n>=n)? n:m ;

/*******************************************************************************/

	  for( int i = min ; i>0 ; i--){
	if( m%i == 0 && n%i == 0 ){
	  a = i ;
	  break ;
}
}/*****************************************************************************/
        System.out.println( "最大公约数为" + a ) ;
	b = (n/a) * (m/a) * a ;
	System.out.println( "最小公倍数为" + b ) ;
	System.out.println(" 输入J继续,输入T退出") ;
	String ee1 = scan.next( ) ;
	char tt1 = ee1.charAt(0) ;
	  if ( tt1 == 'T' )  System.exit(0) ;
	System.out.println("******************************************"+'\n'+'\n'+'\n'+'\n'+"重新输入n m") ;
}
}
}

for循环从最高处往下遍历,找到的第一个公约数即为最大公约数,找到后直接break跳出循环

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值