java:输入两个正整数m和n,求其最大公约数和最小公倍数。
程序分析:利用辗除法。
程序运行截图:
辗转相除法, 又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法。它是已知最古老的算法, 其可追溯至3000年前。它首次出现于欧几里德的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》
void
main()
{
int
a,b,num1,num2,temp;
printf
(
"please input two numbers:\n"
);
scanf
(
"%d,%d"
,&num1,&num2);
if
(num1<num2)
{
temp=num1;
num1=num2;
num2=temp;
}
a=num1;
b=num2;
while
(b!=0)
/*利用辗除法,直到b为0为止*/
{
temp=a%b;
a=b;
b=temp;
}
printf
(
"gongyueshu:%d\n"
,a);
printf
(
"gongbeishu:%d\n"
,num1*num2/a);
}
|
public class Test {
public static final void main(String[] args) {
System.out.println("请输入两个正整数");
System.out.print("第一个正整数:");
Scanner scanner = new Scanner(System.in);
String one = scanner.nextLine();
int a = Integer.valueOf(one);
System.out.print("第二个正整数:");
String two = scanner.nextLine();
int b = Integer.valueOf(two);
System.out.println("a = " + a + ", b =" + b);
// 求最大公约数
// 1. a ÷ b,令temp为所得余数(0≤r<b)
// 若 temp = 0,算法结束;b 即为答案。
// 2. 互换:置 a←b,b←temp,并返回第一步。
int temp, num1 = a, num2 = b;
if (a < b) {
// 互换位置
temp = b;
b = a;
a = temp;
}
System.out.println("a = " + a + ", b =" + b);
while (b != 0) {/* 利用辗除法,直到b为0为止 */
temp = a % b;
a = b;
b = temp;
}
System.out.println("最大公约数:" + a);
// 求最小公倍数
System.out.println("最小公倍数:" + num1 * num2 / a);
}
}