#include<iostream>
using namespace std;
bool atrue=0,btrue=0;
int ju(int m,int n,int p)
{
if(m==1&n==1){atrue=1;return 0;}
if(n==1){btrue=1;return 0;}
while(p>=1)
{
if(m%p==0){ju(m/p,n,p-1);}
if(n%p==0){ju(m,n/p,p-1);}
p--;
}
return 0;
}
int main()
{
int m,n;
while(cin>>m>>n,m,n)
{
atrue=0;btrue=0;
ju(m,n,100);
if(!atrue&&btrue)
cout<<n<<endl;
else
cout<<m<<endl;
}
return 0;
}
自己写的 没经过清晰 的代码,对,但是是乱的啊
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int a,b,i;
while(cin>>a>>b,a,b)
{ int f=1;int f1=0;
if(a<100&&b<100)
cout<<a<<endl;
else if(a%b==0)
{
for(i=2;i<sqrt(b);i++)
{
if(b%i==0)
{cout<<a<<endl; f=0;break;}
}
if(f)cout<<b<<endl;
}
else
{
for(i=2;i<=sqrt(a);i++)
{
if(a%i==0){f1=1;break;}
}
for(i=2;i<sqrt(b);i++)
{
if(b%i==0){f=0;break;}
}
if(f1==0&&f==0)
cout<<b<<endl;
if(f1==0&&f==1) cout<<a<<endl;
if(f1==1&&f==0)
{
for(i=2;i<100;i++)
{
if(b%i==0&&a%i==0)
{cout<<b<<endl;break;}
}
}
}
}
return 0;
}