import java.util.Scanner;
public class CandC
{
public static int gcd(int m, int n)
{
while (true)
{
if ((m = m % n) == 0)
return n;
if ((n = n % m) == 0)
return m;
}
}
public static void main(String args[]) throws Exception
{
//Scanner chin = new Scanner(System.in);
//int a = chin.nextInt(), b = chin.nextInt();
int a=24; int b=32;
int c = gcd(a, b);
System.out.println( "最小公倍数: " + a * b / c + "\n最大公约数: " + c);
}
}
怎么就求出最大公约数了呢 gcd方法里面怎么运行的,求详解
public class CandC
{
public static int gcd(int m, int n)
{
while (true)
{
if ((m = m % n) == 0)
return n;
if ((n = n % m) == 0)
return m;
}
}
public static void main(String args[]) throws Exception
{
//Scanner chin = new Scanner(System.in);
//int a = chin.nextInt(), b = chin.nextInt();
int a=24; int b=32;
int c = gcd(a, b);
System.out.println( "最小公倍数: " + a * b / c + "\n最大公约数: " + c);
}
}
怎么就求出最大公约数了呢 gcd方法里面怎么运行的,求详解
while (true)
{
if ((m = m % n) == 0)
return n;
if ((n = n % m) == 0)
return m;
} 余数都是为0的,没有看到除不尽的
public class CandC
{
public static int gcd(int m, int n)
{
int r;
while (true)
{
r=m%n;
if(r==0)return n;
else
m=n;n=r;
}
}
public static void main(String args[]) throws Exception
{
//Scanner chin = new Scanner(System.in);
//int a = chin.nextInt(), b = chin.nextInt();
int a=24; int b=32;
int c = gcd(a, b);
System.out.println( "最小公倍数: " + a * b / c + "\n最大公约数: " + c);
}
}
看一下这个程序,你就明白了。算法见9楼
public static int gcd(int x,int y){
if(x==0){
return y;
}
if(y==0){
return x;
}
if(x<y){
return gcd(y%x,x);
}
return gcd(y,x%y);
}
}