递归法求两个数的最大公约数。
函数接口定义:
int gys(int m,int n);
其中 m 和 n 都是用户传入的参数。函数用递归法求m 和 n的最大公约数。
#include
int gys(int m,int n)
{
}
int main()
{
int m,n;
scanf("%d%d",&m,&n);
printf("%d
",gys(m,n));
return 0;
}
输入样例:
24 16
输出样例:
8
函数接口定义:
int gys(int m,int n);
其中 m 和 n 都是用户传入的参数。函数用递归法求m 和 n的最大公约数。
#include
int gys(int m,int n)
{
}
int main()
{
int m,n;
scanf("%d%d",&m,&n);
printf("%d
",gys(m,n));
return 0;
}
输入样例:
24 16
输出样例:
8
举一反三
- 以下程序是求整数m,n的最大公约数和最小公倍数,请补充完整: int gys(m,n) int m,n; { int t,r; if(m 第一空: m=n 第二空: r=m%n 第三空: n=r 第四空: gys(m,n)
- 有以下递归函数求最大公约数的程序, 则程序的执行结果是( )。#include<stdio.h>int gcd(int m, int n){ int g; if (n == 0) g=m; else g=gcd(n,m%n); return (g); }void main( ){ int m=21,n=7; printf(“%d”,gcd(m,n)); }
- 输入2个整数,输出它们的最小公倍数和最大公约数。 #include<stdio.h> void main() {int m,n,gbs,gys; scanf("%d,9/6d",m,n); gbs=m; while(______)/*第一空*/ gbs=______;/*第二空*/ gys=______;/*第三空*/ printf("%d %d\n",gbs,gys); }
- 读程序从键盘输入 1902 , 则程序的输出结果是 :( ) int fun(int n) { int m=0,c; while(n!=0) { c=n%10; m=m*10+c; n=n/10; } return(m); } int main() { int m; scanf("%d",&m); printf("%d\n",fun(m)); return 0; }
- 编写用辗转相除法求两个数最大公约数的函数,调用该函数求两个数的最大公约数和最小公倍数。 #include "stdio.h" int gcd(int m,int n) { int r; do {【1】; m=n; n=r; } while(r!=0); return 【2】 ; } main() { int a,b,x,y; scanf("%d%d",&a,&b); x=gcd(【3】); y=a*b/x; /*求a和b的最小公倍数*/ printf("GCD=%d,LCM=%d\n",x,y); }