java 求两个数的最大公约数
3a. 编写计算“两个整数的最大公约数”程序。
//方法一:定义法
// 根据定义让i累加上去的到结果,缺点是:当数据大时循环的次数过大
package pro1.suanfa.whp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class common_divisor { /**
* 计算两个数的公约数
* 方法一
* @param args
* @throws IOException
* @throws NumberFormatException
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
try {
System.out.println("计算两个数的最大公约!!");
System.out.println("请输入第一个正整数:");
BufferedReader br1 = new BufferedReader(new InputStreamReader(
System.in));
int num1 = Integer.parseInt(br1.readLine());
System.out.println("请输入第二个正整数:");
BufferedReader br2 = new BufferedReader(new InputStreamReader(
System.in));
int num2 = Integer.parseInt(br2.readLine());
if(num1>0&&num2>0)
{
int min;
if (num1 < num2)// 或者int min=Math.min(num1, num2);
{
min = num1;
} else {
min = num2;
}int Maxcommin_divisor = 1;
for (int i = min;
i >= 1;
i--) {
if (num1 % i == 0 && num2 % i == 0) {
Maxcommin_divisor = i;
break;
}
}
System.out.print("最大公约数是:" + Maxcommin_divisor);
}else
{
System.out.print("输入的数不是正整数");
}
} catch (Exception e) {
System.out.print("输入的数不是正整数");
}
}}
方法二:欧几里德算法(辗转相除法):java求两个整数最大公约数
package pro1.suanfa.whp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class common_divisor { /**
* 计算两个数的公约数
* 方法二
* @param args
* @throws IOException
* @throws NumberFormatException
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
try {
System.out.println("计算两个数的最大公约!!");
System.out.println("请输入第一个正整数:");
BufferedReader br1 = new BufferedReader(new InputStreamReader(
System.in));
int num1 = Integer.parseInt(br1.readLine());
System.out.println("请输入第二个正整数:");
BufferedReader br2 = new BufferedReader(new InputStreamReader(
System.in));
int num2 = Integer.parseInt(br2.readLine());
int Maxcommin_divisor;
if(num1>0&&num2>0)
{
if(num1>num2){
Maxcommin_divisor=common(num1,num2);
}else
{
Maxcommin_divisor=common(num2,num1);
}System.out.print("最大公约数是:" +Maxcommin_divisor);
}else
{
System.out.print("输入的数不是正整数");
}
} catch (Exception e) {
System.out.print("输入的数不是正整数");
}
}
private static int common(int a,int b){
if(a%b==0)
return b;
else
return common(b,a%b);
}}
运行答案如下:
文章图片
【java 求两个数的最大公约数】
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 太平之莲
- 赠己诗
- 眼光要放高远
- 人生两件宝(好身体,好心情!)
- 画解算法(1.|画解算法:1. 两数之和)
- 事件代理
- 发小的串门
- 有句话忍很久了,女生要求买房怎么就物质了()
- Java|Java OpenCV图像处理之SIFT角点检测详解