ACM 1175
程序员文章站
2022-03-03 11:35:00
...
题目描述 输入两个正整数,求其最小公倍数。
输入 输入以空格分隔的两个正整数。
输出 输出此两数的最小公倍数,末尾输出换行。
样例输入 14 24
样例输出 168
先了解最小公倍数等于两正整数除以最小公倍数;至于最小公倍数的求法我前几篇ACM的blog中都有,可以先翻翻
so easy,一起来看下代码把
/*
题目描述 输入两个正整数,求其最小公倍数。
输入 输入以空格分隔的两个正整数。
输出 输出此两数的最小公倍数,末尾输出换行。
样例输入 14 24
样例输出 168
*/
#include<stdio.h>
int main()
{
int x,y,z,m,n;
while(scanf("%d%d",&x,&y)!=EOF) //利用此语句来进行输出多行
{
m=x,n=y; //最初的x,y值,分别赋给m,n;
while (y!=0)
{
z=x%y;
x=y;
y=z;
}
printf("%d\n",m*n/x); //最小公倍数等于两正整数除以最大公约数
}
return 0;
}
还有另外一种解法,辗转相减法,也就是将两数反复相减,直至相等,这时相等的数则是两数的最大公约数,最小公倍数也就随之出来了
#include<stdio.h>
int main()
{
int x,y,z,m,n;
while(scanf("%d%d",&x,&y)!=EOF) //利用此语句来进行输出多行
{
m=x,n=y; //最初的x,y值,分别赋给m,n;
while (x!=y)
{
if (x>y)
x=x-y;
else if(x<y)
y=y-x;
}
printf("%d\n",m*n/x); //x为最大公约数,最小公倍数等于两正整数除以最大公约数
}
return 0;
}
虽然看起来很简单,但是大家一定要多敲几遍,记住算法,了解语法,自己不看只看条件就能够立马敲出代码,这样才算真正掌握了这道题。
上一篇: ACM 1179
下一篇: 深度优先遍历与广度优先遍历(一)
推荐阅读