判断两个整数互质的方法
概念:公约数只有1的两个数叫做互质数。根据互质数的概念可以对一组数是否互质进行判断。如:9和11的公约数只有1,则它们是互质数。
求商判断法:用大数除以小数,如果除得的余数与其中较小数互质,则原来两个数是互质数。如:317和52,317÷52=6……5,因余数5与52互质,则317和52是互质数。
#include<iostream>
using namespace std;
bool isCoprime(int x,int y)
{
if(x==1 && y==1)//1和1互质
return true;
else if(x<=0 || y<=0 || x==y)//非正整数都不存在互质的说法
return false;
else if(x==1 || y==1)//1和任何正整数都互质
return true;
else
{
int tmp=0;
//使用求商判断法,如果输入的x<y,第一次循环会交换x和y的位置
while(true)
{
tmp=x%y;
if(tmp==0)
{
break;
}
else
{
x=y;
y=tmp;
}
}
if(y==1) //最大公约数为1,所以互质
return true;
else //最大公约数大于1,所以不互质
return false;
}
}
int main(void)
{
bool ret=isCoprime(19,6);
cout<<ret<<endl;
return 0;
}