题目描述
输入一个正整数n,判断n是否是素数,若n是素数,输出”Yes”,否则输出”No”。
输入
输入一个正整数n(n<=1000)
输出
如果n是素数输出"Yes",否则输出"No"。输出占一行。
样例输入 Copy
2
样例输出 Copy
Yes
解题方法
素数(Prime number,又称质数):
指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个正因数的数),否则称为合数。
注意:1不是素数
程序代码实现如下
unsigned i;
if (n == 1)
cout << "No";
for (i = 2; i < n; i++)
if (n%i == 0)
{
cout << "No";
break;
}
if (i >= n && n != 1)
cout << "Yes";
优化程序
unsigned i;
if (n == 1)
cout << "No";
for (i = 2; i <= sqrt(n); i++)
if (n%i == 0)
{
cout << "No";
break;
}
if (n != 1 && i > sqrt(n))
cout << "Yes";
改为函数调用(返回bool类型)
bool IsPrimeNumber(unsigned N)
{
if (N == 1)
return false;
for (unsigned i = 2; i <= sqrt(N); i++)
if (N%i == 0)
return false;
return true;
}
if (IsPrimeNumber(n))
cout << "Yes";
else
cout << "No";
程序代码如下(使用C++)
#include<iostream>
#include<cmath>
using namespace std;
bool IsPrimeNumber(unsigned N)
{
if (N == 1)
return false;
for (unsigned i = 2; i <= sqrt(N); i++)
if (N%i == 0)
return false;
return true;
}
int main()
{
unsigned n, i;
cin >> n;
if (IsPrimeNumber(n))
cout << "Yes";
else
cout << "No";
// if (n == 1)
// cout << "No";
//for (i = 2; i < n; i++)
// if (n%i == 0)
// {
// cout << "No";
// break;
// }
//if (i >= n && n != 1)
// cout << "Yes";
//for (i = 2; i <= sqrt(n); i++)
// if (n%i == 0)
//{
// cout << "No";
// break;
//}
//if (n != 1 && i > sqrt(n))
// cout << "Yes";
return 0;
}