pta-最小公倍数,最大公约数
Posted -data-struct-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pta-最小公倍数,最大公约数相关的知识,希望对你有一定的参考价值。
求最小公倍数,最大公约数的两种常见方法
1.辗转相除法
又称为欧几里德算法(具体...请自查百度)
辗转相除法的核心就是不断的让两个数做除法运算。其原理基于两个整数的最大公约数等于其中较小的数和两数的相除余数的最大公约数。
另z=x%y;
x=y;
y=z;
终止条件是y=0
代码如下:
#include<stdio.h>
int main()
{
int x, y, z, n, m, w;
printf("请输入两个数:
");
scanf_s("%d %d", &x, &y);
w = x>y ? x : y;
if (w = y)
{
w = x;
x = y;
y = w;
}
m = x, n = y;
while (y)
{
z = x%y;
x = y;
y = z;
}
printf("最大公约数为:%d", x);
printf("
最小公倍数为:%d
", m*n / x);
system("pause");
}
2.穷举法
这个算法的时间复杂度较高,建议使用上边的第一种方法
#include<stdio.h>
int main()
{
int x,y,i,j,n,m;
printf("请输入两个数:
");
scanf("%d %d",&x,&y);
m=x,n=y;
for(i=1;i<=x;i++)
{
if(x%i==0&&y%i==0)
{
break;
}
}
for(i=x;i>0;i--)
{
if(x%i==0&&y%i==0)
{
break;
}
}
printf("最大公倍数:%d
",i);
printf("最小公约数:%d
",m*n/i);
system("pause");
return 0;
}
以上是关于pta-最小公倍数,最大公约数的主要内容,如果未能解决你的问题,请参考以下文章