C语言题目 递归计算两个正整数的最大公约数

如题所述

#include<stdio.h>
void swap(int *m,int *n){
int t;
if(m < n){
t = n;
n = m;
m = t;
}
}
int f(int m,int n){
if(m%n == 0)return n;
else
return f(n,m%n);
}
int main(){
int p = 0,m = 0,n = 0;
printf("请按照由大到小的顺序输入两个整数,用空格隔开:\n");
scanf("%d%d",&m,&n);
swap(m,n);
p = f(m,n);
printf("两个数的最大公约数是:%d\n",p);
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-12-05
设计一个循环,循环从两个数中最小的一个开始,然后看循环的数能否同时整除这两个数,若不行,就减一在此遍历,若可以,就找到了这两个数的最大公约数

c语言求出2个正整数的最大公约数(解释一下好吗)
比方 15和25 先拿 25\/15 余数 10 再拿 15\/10 余数 5 接着 10\/5 余数 0 则5就是最大公约数,了解了怎么算法,下面来解释过程。include "stdio.h"void main(){ int a,b,r,t;scanf("%d%d",&a,&b);if(a

c语言求两个正整数的最大公约数
1 根据数学定义,可同时整除两个操作数的最大整数,就是最大公约数:int gcd(int m, int n)\/\/求n和m的最大公约数{ int min = m>n?n:m; \/\/两个数的较小者。 while(min > 0) { if(m%min == 0 && n%min == 0) break;\/\/都能整除,则为最大公约数。 min--...

C语言 求多个数的最小公倍数,最大公约数,调用还属两个两个求
include <stdarg.h> \/\/ 求2个数的最大公约数,辗转相除法 int GCD(int lhs, int rhs){ return rhs % lhs ? GCD(rhs % lhs, lhs) : lhs;} \/\/ n个数的最大公约数 int NGCD(int n, ...){ va_list argPtr;va_start(argPtr, n);int gcd = va_arg(argPtr, int);for(int i...

编写一个c语言程序 求两个整数的最大公约数
```在上面的代码中,我们定义了一个`gcd`函数来求两个整数的最大公约数。`gcd`函数使用递归方式来实现辗转相除法求最大公约数。如果a能被b整除,则b就是两个整数的最大公约数。否则,我们就不断将b作为a,将a%b作为b,不断递归求解,直到b能够整除a。在主函数中,我们首先使用`scanf`函数来读...

计算两个正整数的最大公约数c语言
计算两个正整数的最大公约数(Greatest Common Divisor,简称GCD)是数学中的一个经典问题。在C语言中,可以使用欧几里得算法(也称为辗转相除法)来计算两个数的最大公约数。在上述代码中,我们定义了一个名为gcd的函数来计算最大公约数。该函数使用递归的方式实现欧几里得算法。具体来说,如果第二个...

C语言编程如何实现求两个整数的最大公约数?
在上述代码中,我们定义了一个名为gcd的函数,用于求解两个整数的最大公约数。该函数使用递归的方式实现欧几里得算法。在主函数中,我们首先从用户输入中读取两个整数,然后调用gcd函数计算它们的最大公约数,并将结果输出到控制台。♡♡ 有帮助到的话,麻烦采纳哦!♡♡...

C语言编程:输入两个正整数m和n,求它们的最大公约数。
int GCD(int a,int b)\/\/定义函数,用来计算最大公约数 { return b==0?a:GCD(b,a%b);\/\/此处使用了递归,如果b=0,返回a为最大公约数,否则,一直以b与a%b赋给函数,实现辗转相除 } int main(){ int a, b ; \/\/定义实参a, b int answer ; \/\/定义最后结果 scanf ( "%d%d" , ...

编写递归函数求两个正整数a和b的最大公约数
不想吐槽百度的排版。

程序设计,两个正整数的最大公约数(Greatest Common Divisou,GCD)是能 ...
include <stdio.h>#include<stdlib.h>#include<math.h> int Gcd( int a ,int b ); main(){int a,b; \/\/储存两个数int g; \/\/接收最大公约数printf("Input a,b:");scanf("%d,%d",&a,&b);g=Gcd(a,b);\/\/增强程序健壮性if(g==-1)printf("Input error!\\n");elseprintf("...

如何在c语言中求两数的最大公约数?
递归代码和运行结果如下:可见正确输出了12和18的最大公约数6 附源码:include <stdio.h> int f(int a, int b) { if (b == 0)return a;else return f(b, a % b);} int main() { int a, b;scanf("%d%d", &a, &b);printf("%d\\n", f(a, b));return 0;} ...

相似回答