View Code of Problem 102

#include <stdio.h>
#include<math.h>

int x, y, P, Q, i, a[10000], index, m, n, answer;

int f(int q, int p)
{
	int t;
	while (q != 0 && p != 0)
	{
		t = q % p;
		q = p;
		p = t;
	}
	if (q == x)return 1;
	else return 0;
}

int main()
{
	while (scanf("%d%d", &x, &y) != EOF)
	{
		index = 0; answer = 0;
		for (i = x; i <= sqrt(y*x); i += x)
		{
			if (y%i == 0)
			{
				a[index] = i;
				index++;
			}
		}
		if (index == 0)
		{
			printf("0\n");
			continue;
		}
		for (i = 0; i < index; i++)
		{
			m = a[i];
			n = x * y / m;
			if (f(n, m))
			{
				if (m != n)answer += 2;
				else answer++;
			}
		}
		printf("%d\n", answer);
	}
}

Double click to view unformatted code.


Back to problem 102