Contest2653 - 2021ACM俱乐部后备营个人训练赛第2场(补题场)

素数,又称质数,指在大于1的自然数中,除了1和此整数自身外,不被其他自然数整除的数。换句话说,只有两个正约数(1和自身)的自然数即为素数。比1大但不是素数的数被称为合数。1和0既非素数也非合数。
对于两个整数,如果它们的公约数只有1,就称这两个整数互质。
小米明白了素数和互质的概念后,老师出了这样一道题,输入两个数,如果他们互质,计算它们之和,否则,计算它们乘积。最后的结果判断是否是素数。

输入

两个整数m,n。

输出

第一行是一个整数,即根据互质情况算出的结果。
第二行是一个字符串,根据上面得到的结果判断是否是素数,如果是则输出“YES”,否则输出“NO”。

样例输入 Copy

12 7

样例输出 Copy

19 
YES

提示

100%的数据:2<=m,n<=109
 
 
代码如下:
#include<iostream>
using namespace std;
int fun(int m,int n)
  {
    int t;
    if(m<n)
    {
        t=m;m=n;n=t;
    }
    while(m%n)
    {
        t=n;
        n=m%n;
        m=t;
    }
    return n;
}                                         //判断两数是否互质,若n=1,则两数互质
int main()
{long long int m,n;               //因为m*n的范围较大,所用long long int    
int temp;
int s;
 cin>>m>>n;
 if(m>=2&&n<=1000000000&&m<=1000000000&&n>=2)
 {temp=fun(m,n);
 if(temp==1)
    {cout<<(m+n)<<endl;
    for(int i=2;i<(m+n);i++)
      {if(int(s=(m+n)%i)!=0)
       continue;
       if(int(s=(m+n)%i)==0)
        cout<<"NO"<<endl;
        break;}
      if(s!=0)
       cout<<"YES"<<endl;
    }
 else 
    { cout<<(m*n)<<endl;
     for(int i=2;i<(m+n);i++)
      {if(int(s=(m+n)%i)!=0)
       continue;
       if(int(s=(m+n)%i)==0)
        cout<<"NO"<<endl;
        break;}
      if(s!=0)
       cout<<"YES"<<endl;}

 
 }
    
 }
posted @ 2021-01-13 21:20  糯米不爱吃团子  阅读(215)  评论(0)    收藏  举报