ZOJ 1577 GCD & LCM
大意是输入a,b;求出有多少对数p,q满足GCD(p,q) =a;LCM(p,q) =b。
输出对数。
思路是令x=lcm/gcd(如果lcm不能被整除,则输出0);然后再将x素因子分解,判断x有k个互异的素因子,
对数为2^k。
代码如下:
#include"stdio.h" #include"math.h" int main() { int a,b; while(scanf("%d%d",&a,&b)!=EOF) { if(b%a!=0){printf("0\n");continue;} int n=0,ans=1; b/=a;int i=2,j=(int)sqrt((double)b); for(i=2;i<=j;i++) if(b%i==0) { n++; while(b%i==0){b/=i;} } if(b!=1) n++; for(i=1;i<=n;i++) ans*=2; printf("%d\n",ans); } return 0; }