几种求最小公约数和最大公倍数的思考(C语言实现)-创新互联
首先我们得先搞清楚大公约数和最小公倍数的定义.
创新互联公司是一家集做网站、网站制作、网站页面设计、网站优化SEO优化为一体的专业网站设计公司,已为成都等多地近百家企业提供网站建设服务。追求良好的浏览体验,以探求精品塑造与理念升华,设计最适合用户的网站页面。 合作只是第一步,服务才是根本,我们始终坚持讲诚信,负责任的原则,为您进行细心、贴心、认真的服务,与众多客户在蓬勃发展的市场环境中,互促共生。大公约数:两个或多个整数共有约数中大的一个,例如,6和9的大公约数是3.
最小公倍数:两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数,例如,6和21的最小公倍数是42.
一.辗转相除法.
有两个整数a和b
1.a%b = temp; 若temp=0;此时b就是a和b的大公约数
2.若b≠0,则a=b;b=temp;继续a%b的操作
3.例如.21和6, 21%6余3; 6%3余0;此时3就是他们的大公约数
4.得到大公约数后,用这两个数的乘积除以他们的大公约数就得到了最小公倍数,例如,6和21,大公约数为3, (6*21)/3 = 42; 42就是他们的最小公倍数.话不多说上代码
#define _CRT_SECURE_NO_WARNINGS 1
#include//辗转相除法,乘积除以大公因数得到最小公倍数
int fib(int a, int b)
{
while (a*b!=0)
{
int tmp = a % b;
a = b;
b = tmp;
}
//printf("%d %d\n", a, b);
return a;
}
int main()
{
int a = 0;
int b = 0;
printf("请输入两个数:>\n");
scanf("%d %d", &a, &b);
int sum = a * b;
int m = fib(a,b);
printf("大公约数 = %d\n", a);
printf("最小公倍数 = %d\n",sum/m);
return 0;
}
运行结果
二.更象相减
1. 若a >b,则 a = a - b;
2. 若a< b,则 b = b - a;
3. 若 a = b,则 a(b)即为两数的大公约数
4.若 a ≠ b,则继续执行第一步操作。
5.例如21和6. 21-6=15(15>6); 15-6=9(9>6); 9-6=3(3<6); 6-3=3(3=3)// 3就是这两个数的大公约数,同理,同样的办法可以得到两个数的最小公倍数,上代码
int fib(int a, int b)
{
while (a != b)
{
if (a >b)
{
a = a - b;
}
else
{
b = b - a;
}
}
return a;
}
int main()
{
int a = 0;
int b = 0;
printf("请输入两个数;>\n");
scanf("%d %d", &a, &b);
int sum = a * b;
int m = fib(a, b);
printf("大公约数 = %d\n", m);
printf("最小公倍数 = %d\n", sum/m);
return 0;
}
运行结果
三.硬算(穷举).
有两个整数a和b:
从1开始,让a和b同时除以,直到某个数同时满足被a和b整除,此时这个被整除的数字就是大公约数,同样道理,可以获得最小公约数.上代码
int fib(int a, int b)
{
int n = 0;
for (int i = 1; i< b; i++)//i小于a和b任意一个都行
{
if ((a % i == 0) && (b % i == 0))
{
n = i;
}
}
return n;
}
int main()
{
int a = 0;
int b = 0;
printf("请输入两个数;>\n");
scanf("%d %d", &a, &b);
int sum = a * b;
int m = fib(a, b);
printf("大公约数 = %d\n", m);
printf("最小公倍数 = %d\n", sum/m);
return 0;
}
运行结果
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
当前文章:几种求最小公约数和最大公倍数的思考(C语言实现)-创新互联
网页URL:http://azwzsj.com/article/goiop.html