这道题值得记录,,做了一下午,看了书上的代码,,
#include<stdio.h>
bool aTrue,bTrue;
int judge(int m,int n,int p)
{
if(aTrue)return 0;
//printf("(m,n,p)==(%d,%d,%d)\n",m,n,p);
if(m==1&&n==1)
{
aTrue = true;
return 0;
}
if(n == 1)bTrue = true;
while(p>1)
{
if(m%p == 0)judge(m/p,n,p-1);
if(n%p == 0)judge(m,n/p,p-1);
p--;
}
return 0;
}
int main()
{
int a,b;
while(scanf("%d%d",&a,&b)!=EOF)
{
if(a<b)
{ int temp = a;a = b;b = temp;}
aTrue = false;
bTrue = false;
judge(a,b,100);
if(!aTrue&&bTrue)
printf("%d\n",b);
else
printf("%d\n",a);
}
}