java演算法——求最大公約數和最小公倍數
阿新 • • 發佈:2019-02-13
//求最大公約數和最小公倍數
/*求最大公約數方法:輾轉相除法
始終用較大數除以較小數,然後用餘數代替較大數
整除時的除數就是最大公約數
舉例:222 407求最大公約數
222 407(407除以222餘數185)
222 185(222除以185餘數37)
222 37 (222除以37餘數0)
所以最大公約數為37
*/
/*求最大公約數方法:輾轉相除法
始終用較大數除以較小數,然後用餘數代替較大數
整除時的除數就是最大公約數
舉例:222 407求最大公約數
222 407(407除以222餘數185)
222 185(222除以185餘數37)
222 37 (222除以37餘數0)
所以最大公約數為37
*/
//求最小公倍數方法:最小公倍數等於兩數之積除以最大公約數
package com.suanfa; import java.util.*; public class GongyueAndGongbei { public static void main(String[] args) { System.out.println("222和407的最大公約數是:"+gongyue(222,407)); System.out.println("222和407的最小公倍數是:"+gongbei(222,407)); } //求最小公倍數 static int gongbei(int a,int b) { return (a*b)/gongyue(a,b); } //求最大公約數函式 static int gongyue(int a,int b) { int gongyue=0; if(a<b) { //交換a、b的值 a=a+b; b=a-b; a=a-b; } if(a%b==0) { gongyue = b; } while(a % b>0) { a=a%b; if(a<b) { a=a+b; b=a-b; a=a-b; } if(a%b==0) { gongyue = b; } } return gongyue; } }
另一種求最大公約數的方法:
import java.util.*; public class GongYue { public static void main(String[] args) { Scanner scan=new Scanner(System.in); int a=scan.nextInt(); int b=scan.nextInt(); int i=a;//從大到小,第一次求出來的公約數就是最大公約數 //如果不能同時整除兩個數,則不是公約數 while((a%i!=0)||(b%i!=0)) { i--; } System.out.println(i); } }