C语言 如何求两整数的最大公约数与最小公倍数
更新时间:2022年11月07日 10:15:07 作者:FanterC1107
这篇文章主要介绍了C语言中如何求两整数的最大公约数与最小公倍数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
题目
用一函数求最大公约数,用另一函数调用此函数求出最大公约数,并用求出的最大公约数求最小公倍数。
具体要求如下:
- ①用全局变量。将最大公约数与最小公倍数设为全局变量,在主函数中输出它们的值。
- ②不用全局变量。最大公约数和最小公倍数由被调模块返回值。
思路
从两个数中选一个数,从这个数开始,逐步减一,当能够同时被两个数整除时,结束循环,即为最大公约数。
最小公倍数*最大公约数=两个数乘积。
代码
法一
#include<stdio.h> int main() { int x,y,z,a,b,c,d,t,x_0,y_0; printf("请输入两个整数:"); scanf("%d,%d",&x,&y); x_0=x;y_0=y; if(x<y) t=x,x=y,y=t; do { a=x%y; if(a!=0) x=y,y=a,a=x%y; }while(x%y!=0); printf("这两个整数的最大公约数为:%d\n",y); c=x_0/y;d=y_0/y; z=y*c*d; printf("这两个整数的最小公倍数为:%d\n",z); return 0; }
法二(局部变量)
#include<stdio.h> int yue(int a,int b) { int i,s,max_yue; for(i=a;i>0;i--) if(a%i==0&&b%i==0) {max_yue=i;break;} return(max_yue); } int bei(int a,int b) { int yue(int a,int b); int max_bei; max_bei=a*b/yue(a,b); return(max_bei); } int main() { int a,b,t,max_yue,max_bei; int yue(int a,int b); int bei(int a,int b); printf("请输入两个正整数:"); scanf("%d,%d",&a,&b); if(a<b) {t=a;a=b;b=t;} max_yue=yue(a,b); max_bei=bei(a,b); printf("这两个数最大公约数为:%d\n最小公倍数为:%d\n",max_yue,max_bei); }
法三(全局变量)
#include<stdio.h> int max_yue,max_bei; int yue(int a,int b) { int i; for(i=a;i>0;i--) if(a%i==0&&b%i==0) {max_yue=i;break;} return(max_yue); } int bei(int a,int b) { int yue(int a,int b); max_bei=a*b/yue(a,b); return(max_bei); } int main() { int a,b,t; int yue(int a,int b); int bei(int a,int b); printf("请输入两个正整数:"); scanf("%d,%d",&a,&b); if(a<b) {t=a;a=b;b=t;} max_yue=yue(a,b); max_bei=bei(a,b); printf("这两个数最大公约数为:%d\n最小公倍数为:%d\n",max_yue,max_bei); }
运行结果
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Visual Studio 2019安装使用C语言程序(VS2019 C语言)
这篇文章主要介绍了Visual Studio 2019安装使用C语言程序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-03-03C++ normal_distribution高斯正态分布函数的用法示例
高斯分布也称为正态分布(normal distribution),常用的成熟的生成高斯分布随机数序列的方法由Marsaglia和Bray在1964年提出,这篇文章主要给大家介绍了关于C++ normal_distribution高斯正态分布函数用法的相关资料,需要的朋友可以参考下2021-07-07C语言中settimeofday函数和gettimeofday函数的使用
这篇文章主要介绍了C语言中的settimeofday函数和gettimeofday函数的使用,注意settimeofday()函数只返回0和-1,需要的朋友可以参考下2015-08-08
最新评论