題目:
2104題
#include<stdio.h>
int main()
{
int n,m,t;
while(~scanf("%d%d",&n,&m))
{
if(n==-1&&m==-1)
break;
int flag=0;
for(;n>0&&m>0;)
{
if(n==1&&m==1)
{
printf("YES\n");
flag=1;
break;
}
if(n<m)
{
t=n;
n=m;
m=t;
}
n=n-m;
}
if(flag==0)
printf("POOR Haha\n");
}
return 0;
}
此代碼運用了更相減損術(shù),通過 兩數(shù)相減的差 與 被減數(shù) 不斷相減咆蒿,直到兩數(shù)相減的差與被減數(shù)相同,即此時這2個數(shù)為原來2個數(shù)的最大公約數(shù)
此題只要2個數(shù)互質(zhì)就可以(互質(zhì):即2個數(shù)的最大公約數(shù)為1)
但是... ...這個方法復雜了
所以換一個方法:(輾轉(zhuǎn)相除法)
#include<stdio.h>
int gcd(int a,int b)
{
if(b==0)return a;
else return gcd(b,a%b);
} //遞歸法求最大公約數(shù)氢橙,當最大公約數(shù)是1的時候叫搁,兩個數(shù)互質(zhì) a必須要大于b
int main()
{
int x,y,t;
while(~scanf("%d%d",&x,&y))
{
if(x==-1&&y==-1)
break;
if(y>x)
{
t=x;
x=y;
y=t;
}
if(gcd(x,y)==1)
{
printf("YES\n");
}
else
{
printf("POOR Haha\n");
}
}
return 0;
}
判斷2個數(shù)的最大公約數(shù)的模版:
int gcd(int a,int b)
{
if(b==0)return a;
else return gcd(b,a%b);
} //遞歸法求最大公約數(shù)甩鳄,當最大公約數(shù)是1的時候逞度,兩個數(shù)互質(zhì)
if(gcd(x,y)==1)那么x,y互質(zhì)
注意:此題題意翻譯過來就是兩數(shù)互質(zhì)!C羁小档泽!