目录
1.求最大公约数
假设求两个整数m和n的最大公约数
2.求法
依次检查k(2,3,4~)是否是m和n的最大公约数,直到k大于m或n为止。
package csdn.every.day;
import java.util.Scanner; //导入Scanner类
public class Day22test2 {
public static void main(String[] args){
Scanner input = new Scanner(System.in); //创建新对象
System.out.print("Enter first integer:"); //输入第一个整数
int m = input.nextInt(); //调用方法
System.out.print("Enter second integer:");
int n = input.nextInt();
int gcd = 1;//公约数为1
int k=2;
//求k是否是m和n的公约数且k要满足小于m、n
while(k <= m && k <= n){
//判断
if(m % k == 0 && n % k == 0)
gcd = k; //是,则公约数是k
k++; //k继续加,直到推翻while的判断条件
}
System.out.println(m+"和"+n+"的最大公约数是"+gcd);
}
}
加以改造后(辗转相除法或欧几里得算法)
package csdn.every.day;
import java.util.Scanner; //导入Scanner类
public class Day22test2 {
public static void main(String[] args){
Scanner input = new Scanner(System.in); //创建新对象
System.out.print("Enter first integer:"); //输入第一个整数
int m = input.nextInt(); //调用方法
System.out.print("Enter second integer:");
int n = input.nextInt();
//之前的
/*int gcd = 1;//公约数为1
int k=2;
//求k是否是m和n的公约数且k要满足小于m、n
while(k <= m && k <= n){
//判断
if(m % k == 0 && n % k == 0)
gcd = k; //是,则公约数是k
k++; //k继续加,直到推翻while的判断条件
}*/
//改造后的
int r = m % n;
int gcd = 1;
if(r == 0)
gcd = n;
else
while(r != 0) {
m = n;
n = r;
r = m % n;
gcd = n;
}
System.out.println(m+"和"+n+"的最大公约数是"+gcd);
}
}