[问题描述] 输入二个正整数x0,y0(2≤x0≤100000,2≤y0≤1000000),求出满足下列条件的P、Q的个数。 条件:1.P、Q是正整数 二要求P、Q以xO为最大公约数,以yO为最小公倍数。 试求,满足条件的所有可能的两个正整数的个数。 [样例] 输入:x0=3 y0=60 输出:4 说明:(不用输出)此时的 P Q分别为, 3 60 15 12 12 15 60 3 所以,满足条件的所有可能的两个正整数的个数共4种。
【参考程序】:
#include<cstring> #include<cstdio> #include<iostream> using namespace std;
int y,x,ans; int main() { freopen("gygb.in","r",stdin); freopen("gygb.out","w",stdout); scanf("%d%d",&x,&y); if (y%x!=0) { printf("0\n"); exit(0); } int p,k,s; p=y/x; k=0; s=2; while (p>1) { if (p%s==0) { k++; while (p%s==0) p/=s; } s++; } ans=1; for (int i=1;i<=k;i++) ans*=2; printf("%d\n",ans); return 0; }
|