标签:
http://codevs.cn/problem/1012/
输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数
条件: 1.P,Q是正整数
2.要求P,Q以x0为最大公约数,以y0为最小公倍数.
试求:满足条件的所有可能的两个正整数的个数.
二个正整数x0,y0
满足条件的所有可能的两个正整数的个数
3 60
#include<stdio.h> #include<math.h> int x,y; bool zhi(int x) { for (int i=2;i<=sqrt(x);++i) if (x%i==0) return 0; return 1; } int main() { scanf("%d%d",&x,&y); if (y%x!=0) { printf("0"); return 0; } x=y/x; y=0; for (int i=2;i<=x;++i) if (zhi(i)) { if (x%i==0) ++y; while (x%i==0) x/=i; } printf("%d",(int)pow(2,y)); return 0; }
对y/x分解质因数,求得不重复的质因数个数,然后2的次幂就是答案。
例如 3 和 60
60 = 2*2*3*5 那么 2(即2*2)要分配给p或者q,5要分配给p或者q,那么一共有2*2种分法。
标签:
原文地址:http://www.cnblogs.com/shnj/p/4443015.html