1012 最大公约数和最小公倍数问题

来源:互联网 发布:淘宝全景图 编辑:程序博客网 时间:2024/05/18 02:41

简单的枚举

规律:最大公约数和最小公倍数的积等于所求两个数的乘积。

还用到了辗转相除,准备好好整理一下。(辗转相除法的相关证明:)


代码:

#include <iostream>#include <cstdio>using namespace std;int gcd(int a, int b); int main(){//freopen("in.txt","r",stdin);int x0,y0,p,q;    while(scanf("%d%d",&x0,&y0)!=EOF)    {    int cnt=0;    for (int i = x0; i <= y0; ++i)    {    p=i;    q=x0*y0/p;    if (p<q)    {    std::swap(p,q);    }    if (x0==gcd(p,q)&&y0==p*q/gcd(p,q))    {    cnt++;    }        }    printf("%d\n",cnt);    }return 0;}int gcd(int a, int b){return (a%b==0?b:gcd(b, a%b));}


0 0
原创粉丝点击