公约数

原创 2013年12月03日 09:21:47
题目1493:公约数

时间限制:1 秒

内存限制:128 兆

特殊判题:

提交:2354

解决:375

题目描述:

给定两个正整数a,b(1<=a,b<=100000000),计算他们公约数的个数。
如给定正整数8和16,他们的公约数有:1、2、4、8,所以输出为4。

输入:

输入包含多组测试数据,每组测试数据一行,包含两个整数a,b。

输出:

对于每组测试数据,输出为一个整数,表示a和b的公约数个数。

样例输入:
8 16
22 16
样例输出:
4
2

#include<cstdio>
#include<cmath>
using namespace std;
 
int max(int a,int b)
{
    if(b>a){a=a+b;b=a-b;a=a-b;}
    if(a%b==0)return b;
    else return max(b,a%b);
}
int num(int n)
{
    int i,j,count=0;
    for(j=(int)sqrt(1.0*n),i=1; i<=j; ++i)
         if(n%i==0)count+=2;
    if(j*j==n)--count;
    return count;
}
int main()
{
    int a,b,c;
    while(scanf("%d%d",&a,&b)!=EOF &&a &&b )
    {
         c=num( max(a,b) );
         printf("%d\n",c);
    }
    return 0;
}
/**************************************************************
    Problem: 1493
    User: 3011216016
    Language: C++
    Result: Accepted
    Time:20 ms
    Memory:1032 kb
****************************************************************/


相关文章推荐

最大公约数

  • 2016年04月13日 15:21
  • 2KB
  • 下载

最大公约数&&最小公倍数C语言

两个数的最大公约数:最小公倍数 //最大公约数

最大公约数的实例

  • 2015年12月13日 10:41
  • 2.42MB
  • 下载

C语言求最大公约数

  • 2014年10月19日 08:55
  • 165B
  • 下载

经典算法(3)- 用二进制方法求两个整数的最大公约数(GCD)

二进制GCD算法基本原理是:  先用移位的方式对两个数除2,直到两个数不同时为偶数。然后将剩下的偶数(如果有的话)做同样的操作,这样做的原因是如果u和v中u为偶数,v为奇数,则有gcd(u,v)=g...

32位公约数

  • 2013年10月29日 14:42
  • 1.26MB
  • 下载

BZOJ(本校) 2525 公约数 - 莫比乌斯反演

题目描述 给出一个数N,求1

最小公约数最大公倍数

  • 2013年11月26日 16:07
  • 898B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:公约数
举报原因:
原因补充:

(最多只允许输入30个字)