1028. 判断互质
标题题目描述
输入两个正整数m和n,判断m和n是否互质(即最大公约数为1),是则输出Yes,否则输出No。
输入
输入两个整数m和n,中间用空格隔开。
输出
如互质输出Yes,否则输出No。
样例输入
36 56
样例输出
No
数据范围限制
1<=n,m<231
C++代码
#include <iostream>
#include <cassert>
using namespace std;
int main()
{
int m, n;
cin >> m >> n;
assert(m>=1 && n>=1);
bool co_prime = true;
for (int d=2; d<=min(m, n); d++)
{
if (m%d == 0 && n%d == 0)
{
cout << "No" << endl;
co_prime = false;
break;
}
}
if (co_prime == true)
{
cout << "Yes" << endl;
}
return 0;
}
另一更简洁的方法
#include <iostream>
#include <cassert>
using namespace std;
int gcd(int m, int n)
{
return (n == 0) ? m : gcd(n, m % n);
}
int main()
{
int m, n;
cin >> m >> n;
assert(m>=1 && n>=1);
// check whether m and n are co-prime.
if (1 == gcd (m, n))
{
cout << "Yes" << endl;
}
else
{
cout << "No" << endl;
}
return 0;
}