【程序6】 - L8 Q, a+ p( X/ I# D( n- ~9 A
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
/ I1 ~3 E7 N3 I- X8 [# H9 v/**在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。* / * ]. f, d+ ]+ Q9 _9 W" T: Z/ d
import java.util.*; s9 l7 n# y6 S; Z8 x" S7 n" N
public class lianxi06 { u; \4 i/ d" Y8 X
public static void main(String[] args) { 2 A, P) [" t( C% c6 e1 q/ P: ~
int a ,b,m; ) z7 G% g( \# R$ R
Scanner s = new Scanner(System.in);
) x. Q+ t$ u2 C7 aSystem.out.print( "键入一个整数: ");
5 h/ y% N5 c- e% {5 P8 ra = s.nextInt(); # @4 c3 c; K1 P
System.out.print( "再键入一个整数: "); 4 x8 g$ i" L) o# Z. z
b = s.nextInt();
$ i5 s a' i4 h: Y0 P5 J; O4 s; k deff cd = new deff(); 3 @- Y; D6 m: l2 J: ]
m = cd.deff(a,b); 0 f2 b" [1 _) I" a$ b1 E# W/ I
int n = a * b / m;
/ Q+ p+ G: @: v& W5 \, z% C System.out.println("最大公约数: " + m);
% ^" D6 E, D( l6 h3 T& M! i" K System.out.println("最小公倍数: " + n); # {' K7 p, ]- d0 X. O' x U
}
7 Y, i1 T8 x3 O6 T7 z N}
4 ? i, c! Q: \5 n" G; q {, _class deff{ b3 ~5 A; D8 n& ~; o2 e- X
public int deff(int x, int y) { 2 D% a4 W1 W, N2 E: X$ t" o
int t; ; ^$ q& z+ [& ?
if(x < y) {
/ ?, H; H* i# E, X; M5 V t = x; * Z3 q/ _- Z o) X; {5 F
x = y;
9 c8 D& q) }; l4 n$ n3 O+ k' Z: T8 M1 p y = t;
1 I: Z( _! N6 R } ; M1 s# m3 j$ T1 F. t4 J
while(y != 0) {
* K! F/ F$ f& k. k9 B if(x == y) return x; 3 ^ e! t W4 {/ z+ g7 t
else {
, |$ T9 u" g% } int k = x % y; 5 M% v& @4 q' H: ~
x = y;
# b# G+ w: q4 H/ m6 [5 I y = k; 0 G, g3 _- }9 Y, h* O# {
}
4 L0 j0 P f- n4 ~( X! L }
3 j2 W) d {( }6 e return x; 5 {) J" f! j7 K$ \) c
} 8 H/ q8 h/ S4 p/ t
} |