1. 程式人生 > >《演算法》第一章——判斷兩個整數是否互質

《演算法》第一章——判斷兩個整數是否互質

判斷兩個整數互質的方法

       概念:約數只有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;
}