Cod sursa(job #73252)

Utilizator andrei.12Andrei Parvu andrei.12 Data 17 iulie 2007 17:14:51
Problema Medie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>
#include<math.h>
long long gs;
void gcd(int a, int b){
	if (a==0)
		gs = b;
	else
		if (b==0)
			gs = a;
		else
			if (a>b)
				gcd(a%b, b);
			else
				gcd(b%a, a);
}
int main(void)
{
	freopen("divmul.in","r",stdin);
	freopen("divmul.out","w",stdout);
	int t, nrt, x, y;
	long long p, i, a, nrp, sqr;
	scanf("%d", &t);
	for (nrt=1; nrt<=t; nrt++){
		scanf("%d%d", &x, &y);
		p = x*y;
		sqr = sqrt(p);
		nrp = 0;
		for (i=x; i<=sqr; i+=x)
			if (p%i==0){
				a = p/i;
				gcd(a,i);
				if (gs==x)
					if (i!=a)
						nrp+=2;
					else
						nrp++;
			}
		printf("%lld\n", nrp);
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}