题目描述
素数,又称质数,指在大于 11 的自然数中,除了 11 和此整数自身外,不被其他自然数整除的数。换句话说,只有两个正约数(11 和自身)的自然数即为素数。比 11 大但不是素数的数被称为合数。11 和 00 既非素数也非合数。对于两个整数,如果它们的公约数只有 11,就称这两个整数互质。
小米明白了素数和互质的概念后,老师出了这样一道题,输入两个数,如果他们互质,计算它们之和,否则,计算它们乘积。最后的结果判断是否是素数。
输入格式
两个整数 𝑚,𝑛m,n。
输出格式
第一行是一个整数,即根据互质情况算出的结果。
第二行是一个字符串,根据上面得到的结果判断是否是素数,如果是则输出 YES
,否则输出 NO
。
样例 #1
样例输入 #1
12 7
样例输出 #1
19
YES
代码
#include <bits/stdc++.h>
using namespace std;
int g(long long x)
{
if(x<2) return 0;
for(int i=2;i*i<=x;i++)
{
if(x%i==0) return 0;
}
return 1;
}
int main()
{
long long m,n;
cin>>m>>n;
if(__gcd(m,n)==1)
{
cout<<m+n<<endl;
if(g(m+n)) cout<<"YES";
else cout<<"NO";
}
else
{
cout<<m*n<<endl;
cout<<"NO";
}
return 0;
}