本题要求编写一个函数,求两个正整数的最大公约数和最小公倍数。
函数接口定义:
def gys(n,m)
n 和 m都是用户传入的参数。 函数须返回n 和 m 的最大公约数,最小公倍数
裁判测试程序样例:
n=int(input())
m= int(input())
p=n*m
gys1= gys(n,m)
print("最大公约数是{},最小公倍数是{}".format(gys1,int(p/gys1)))
输入样例:
18
12
输出样例:
最大公约数是6,最小公倍数是36
def gys(n, m):
if n > m: # 确定较小和较大的数
n, m = m, n
for i in range(n, 0, -1):
if n % i == 0 and m % i == 0:
gys = i # 求最大公约数
break
else:
gys = 0 # 0表示没有公约数
lcm = n * m // gys # 求最小公倍数
return gys, lcm
n = int(input())
m = int(input())
gys1, lcm1 = gys(n, m)
print("最大公约数是{},最小公倍数是{}".format(gys1, lcm1))
不知道你这个问题是否已经解决, 如果还没有解决的话:参考代码如下:
import java.util.Scanner;
public class Commondivisorandmultiple {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int m=scan.nextInt();
int n=scan.nextInt();
if(m<n) {
int t=m;
m=n;
n=t;
}
for(int i=n;i>=1;i--) {
if(m%i==0&&n%i==0) {
System.out.println(i+" "+(m*n)/i);
break;
}
}
scan.close()
}
}
参考结果如下: