题目描述 Description

输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数

条件:  1.P,Q是正整数

2.要求P,Q以x0为最大公约数,以y0为最小公倍数.

试求:满足条件的所有可能的两个正整数的个数.

输入描述 Input Description

二个正整数x0,y0

输出描述 Output Description

满足条件的所有可能的两个正整数的个数

样例输入 Sample Input

3 60

样例输出 Sample Output

4

分析:

p和q的最大公约数(gcd)是x,最小公倍数(lcm)是y

那么p*q=x*y

设p=x*i,q=x*j,i和j互质

则p*q=(x*i)*(x*j)=x*y,那就有i*j=y/x

我们可以枚举i,从i=1开始,直到i*i>y/x

如果i是y/x的因子

然后j=(y/x)/i

再判断i和j是否互质

因为每次得到的两个数中比较小的就是i,比较大的数是j,i是小于根号(y/x)的,j就是大于根号(y/x)因此不会重复计算,那算到一次,答案就累加2。

代码:

#include<iostream>
using namespace std; int gcd(int x,int y)
{
return(x%y==?y:gcd(y,x%y));
}
int main()
{
int x,y,ans=;
cin>>x>>y;
if(y%x){
cout<<;
return ;
}
y=y/x;
for(int i=; i*i<=y; i++)
{
if(y%i==&&gcd(i,y/i)==)
ans+=;
}
cout<<ans<<endl;
}

  

最新文章

  1. jQuery可拖拽3D万花筒旋转特效
  2. React Native知识3-TextInput组件
  3. MicroERP开发技术分享:技术选型
  4. 字符串截取函数-c语言
  5. CI控制器中设置在其它方法中可用的变量
  6. CKEDITOR使用与配置
  7. 进击的java - tomcat的安装,配置都正确之后,还是报错
  8. C# rmi例子
  9. nopCommerce 数据库初试化及数据操作
  10. yum的一些用法
  11. Sublime Text 3 若干问题解决办法
  12. Delphi 技巧改造HINT的输出方式
  13. java静态初始化代码块
  14. redis的两种安装方法
  15. C#中DataTable与XML格式的相互转换
  16. vim 基础命令大全
  17. 用十条命令在一分钟内检查 Linux 服务器性能
  18. CA证书扫盲,https讲解
  19. 设置JAVA HOME环境变量的秕处理
  20. 卖座网一处SQL注射(Http Referer sqlinjection)

热门文章

  1. javascript获取元素的方法[xyyit]
  2. JVM监测&amp;工具[转]
  3. smarty foreach循环
  4. MySQL Index详解
  5. Cordova - 使用Cordova开发iOS应用实战1(配置、开发第一个应用)
  6. mysql 控制台上传数据库
  7. 进程控制块(Process Control Block, PCB)
  8. ORACLE查出表所有的触发器及触发器详细信息
  9. Effective java 第2版 - 笔记(01) 单例(Singleton)的枚举(enum)实现
  10. 【转】如何拿到半数面试公司Offer——我的Python求职之路