C 语言模板程序 第 1 页 共 28 页 C 语言模板程序 1 求两个数最大公约数 方法一:辗转相除法 思路:两个数,用较大的数除以较小的数,所得余数与较小的数记为新的两个数,再重复之前的过程,直到余数为0,这时较大的数就是最大公约数。 完整程序 #include int main() { int m,n,r; scanf("%d,%d",&m,&n); do { r=m%n; m=n; n=r; } while(n); printf("greatest common divisor is %d\n",m); return 0; } 封装函数 int gcd(int m,int n) { do { r=m%n; m=n; n=r; } while(n); return m; } 调用函数 #include int main() { int m,n,r; int gcd(int m,int n); scanf("%d,%d",&m,&n); gcd(int m,int n); printf("greatest common divisor is %d\n",m); return 0; } C 语言模板程序 第 2 页 共 28 页 方法二:更相减损法 思路:两个数,用较大的数减去较小的数,所得差与较小的数记为新的两个数,再重复之前的过程,直到两个数相等,这时这两个数就是最大公约数。 完整程序 #include int main() { int m,n; scanf("%d,%d",&m,&n); while(m!=n) { if(m>n) m-=n; else n-=m; } printf("greatest common divisor is %d\n",m); return 0; } 封装函数 int gcd(int m,int n) { while(m!=n) { if(m>n) m-=n; else n-=m; } return m; } 调用函数 #include int main() { int m,n,r; int gcd(int m,int n); scanf("%d,%d",&m,&n); printf("greatest common divisor is %d\n",gcd(m,n)); return 0; } 2 求两个数最小公倍数 思路:两个数,从较大的数开始,依次找能同时整除这两个数的整数,这个整数就是这两个数的最小公倍数。 完整程序 C 语言模板程序 第 3 页 共 28 页 #include int main() { int m,n,i; scanf("%d,%d",&m,&n); for(i=(m>n?m:n);;i++) if(i%m==0 && i%n==0) { printf("lease common multiple is %d",i); break; } return 0; } 封装函数 int lcm(int m,int n) { int i; for(i=(m>n?m:n);;i++) if(i%m==0 && i%n==0) return i; } 调用函数 #include int main() { int m,n,i; int lcm(int m,int n); scanf("%d,%d",&m,&n); printf("lease common multiple is %d",lcm...