判断一个整数是否为质数,如果是质数,输出“Yes",否则输出”No"。
输入描述:
一个整数n(1 ≤ n ≤ 1e15) 。
输出描述:
如果是质数,输出“Yes",否则输出”No"。
示例1:
输入:
100000000004977
输出:
Yes
示例2:
输入:
100000000004978
输出:
No
提示:因子都是成对出现的,若一个数n为合数,则其至少有一对因子,其中一个因子sqrt(n)小,一个比sqrt(n)大,(sqrt为开根号,使用时需要包含<math.h>或<cmath>头文件),则对2到sqrt(n)求因子可以提高程序运行效率
#include<stdio.h>
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
long long n;
cin >> n;
int flag = 1;
int i;
for (i = 2; i <=sqrt( n); i++)
{
if (n%i == 0)
{
flag = 0;
}
}
if (flag == 1 && i >=sqrt(n))
{
cout << "Yes" << endl;
}
else
{
cout << "No" << endl;
}
return 0;
}