急急急!!!新手求助!! 还是那些小问题!!
#include<stdio.h>/* 用欧几里德算法求最大公约数 */int main(){ //求两个数的最大公约数 int m ,n,l,t,r; printf("请输入第一个整数:\n"); scanf("%d",&n); printf("请输入第二个整数:\n"); scanf("%d",&m); t = m*n / gcd(m,n); printf("%d",t); } int gcd(int n , int m){ int l,r; //判断m,n 的大小 if(m>n) { m= l; l= n; n= m; } while(1) { r= m%n; if(r==0) { return r; break; } m = n ; n = r; } } 就是求不出自己想要的结果!! int gcd(int n , int m){ int l,r; //判断m,n 的大小 if(m<n) /// 【修改判断条件,保证处理之后m >= n】 { l= n; /// 【调整次序】 n= m; m= l; } while(1) { r= m%n; if(r==0) { return n; /// 【return n】 } m = n ; n = r; } }
[解决办法]
经典的递归算法!
#include<stdio.h>/* 用欧几里德算法求最大公约数 */int GCD(int x,int y);int main(){ //求两个数的最大公约数 int m ,n,l,t,r; printf("请输入第一个整数:\n"); scanf("%d",&n); printf("请输入第二个整数:\n"); scanf("%d",&m); t = GCD(m,n); printf("Result : %d",t); return 0;}int GCD(int x,int y){ return (!y) ? x : GCD(y,x%y);}
[解决办法]
你这gcd函数看起来有点不顺眼啊