#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
#define MAX 10000
using namespace std;
long long int divisor[MAX];
long long int G(long long int a,long long int b)
{
long long int temp,gcd,m,n,lcm;
m=a;
n=b;
while(b!=0)
{
temp=b;
b=a%b;
a=temp;
}
gcd=a;
lcm=(m*n)/gcd;
return lcm;
}
int main()
{
long long int x,test_case,A,C,B,LCM,a,b,c,d,e,i,j,k;
scanf("%lld",&test_case);
while(test_case--)
{
scanf("%lld%lld",&A,&C);
a=sqrt(C);
k=0;
for(i=1; i<=a; i++)
{
if(C%i==0)
{
b=C/i;
if(i==b)
{
divisor[k++]=i;
}
else
{
divisor[k++]=i;
divisor[k++]=b;
}
}
}
sort(divisor,divisor+k);
e=0;
for(i=0; i<k; i++)
{
LCM=G(A,divisor[i]);
if(LCM==C)
{
d=divisor[i];
e++;
break;
}
}
if(e>0)
{
printf("%lld\n",d);
}
else
{
printf("NO SOLUTION\n");
}
memset(divisor,0,sizeof(divisor));
}
return 0;
}
#include<string.h>
#include<algorithm>
#include<math.h>
#define MAX 10000
using namespace std;
long long int divisor[MAX];
long long int G(long long int a,long long int b)
{
long long int temp,gcd,m,n,lcm;
m=a;
n=b;
while(b!=0)
{
temp=b;
b=a%b;
a=temp;
}
gcd=a;
lcm=(m*n)/gcd;
return lcm;
}
int main()
{
long long int x,test_case,A,C,B,LCM,a,b,c,d,e,i,j,k;
scanf("%lld",&test_case);
while(test_case--)
{
scanf("%lld%lld",&A,&C);
a=sqrt(C);
k=0;
for(i=1; i<=a; i++)
{
if(C%i==0)
{
b=C/i;
if(i==b)
{
divisor[k++]=i;
}
else
{
divisor[k++]=i;
divisor[k++]=b;
}
}
}
sort(divisor,divisor+k);
e=0;
for(i=0; i<k; i++)
{
LCM=G(A,divisor[i]);
if(LCM==C)
{
d=divisor[i];
e++;
break;
}
}
if(e>0)
{
printf("%lld\n",d);
}
else
{
printf("NO SOLUTION\n");
}
memset(divisor,0,sizeof(divisor));
}
return 0;
}
0 comments: (+add yours?)
Post a Comment