一、结果图
二、源代码
package sy1;
import java.util.Scanner;
/**
* @author
*
*/
public class Sy1_1 {
// 找出两数的较小值
static int min(int a, int b) {
return a < b ? a : b;
}
// 找出两数的较大值
static int max(int a, int b) {
return a > b ? a : b;
}
// 递归算法 --由提示可得 gcd(a,b)=gcd(min(a,b),max(a,b)%min(a,b))
static int gcd(int a, int b) {
// 递归的出口
if (b == 0) {
System.out.println(a);
return 0;
} else {// 递归的规律
return gcd(min(a, b), max(a, b) % min(a, b));
}
}
// 非递归算法,for循环
static int notgcd(int a, int b) {
for (;;) {
if (b == 0) {
System.out.println(a);
return 0;
} else {// 注意运行顺序,前一步是否会对后一步产生影响
int x = min(a, b);
int y = max(a, b) % min(a, b);
a = x;
b = y;
}
}
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner sc = new Scanner(System.in);
System.out.println("输出你想求的两个正整数");
int i = sc.nextInt();
int j = sc.nextInt();
System.out.println("递归后最大公约数是;");
gcd(i, j);
System.out.println("输出你想求的两个正整数");
int k = sc.nextInt();
int q = sc.nextInt();
System.out.println("非递归最大公约数是;");
notgcd(k, q);
}
}