使用枚举和辗转相除法算出最大公约数
1.枚举:
package hello;
import java.util.Scanner;
public class Hello {
public static void main(String[] args)
{//枚举法
Scanner in = new Scanner (System.in);
int a = in.nextInt();
int b = in.nextInt();
int gcd=1;
for(int i = 2;i <= a && i <=b ;i++)
{
if(a%i==0 && b%i==0)
{
gcd=i;
}
}
System.out.println(a+"和"+b+"的最大的公约数为"+gcd);
in.close();
}
}
运行结果
2.辗转相除法:
package hello;
import java.util.Scanner;
public class Hello {
public static void main(String[] args)
{
Scanner in = new Scanner (System.in);
int a = in.nextInt();
int b = in.nextInt();
int ora=a;
int orb=b;
while(b!=0) {
int r=a%b;
System.out.println(a+","+b+","+r);
a=b;
b=r;
}
System.out.println(ora+"和"+orb+"的最大的公约数为"+a);
in.close();
}
}
运行结果:
辗转相除法代码说明:(1)因为在循环中a与b的值会被破环掉,所以在循环外令a与b等于另外两个变量,可以有利于最后的结果的输出。
(2)便于进一步了解辗转相除法,与循环中输出每一次a与b值的输出。
辗转相除法的原理:
如算a与b的最大公约数:
(1)如果b=0,则最大公约数为a;
(2)b!=0,即b不等于0时,就用a%b得到余数r, 再令a=b,b=r;
(3)再重复第一步,直至b=0.