题目描述
输入一个正整数n,判断n是否是素数,若n是素数,输出”Yes”,否则输出”No”。
输入描述
输入一个正整数n(n<=1000)
输出描述
如果n是素数输出"Yes",否则输出"No"。输出占一行。
输入样例
2
输出样例
Yes
(1) 直观方法
当我们根据素数的数学概念,可以从2到n-1每个数均进行整除判断
int isPrime(int n)
{
for (int j=2; j<n; j++ ){
if(n%j==0){ // 如果不为素数返回0
return 0;
}
}
return 1; // 反之则返回1
}
(2)根号法
素数是因子为1和本身, 如果不是素数,则还有其他因子,其中的因子必有一个大于sqrt(c) ,一个小于sqrt(c) 。所以若为素数则必有一个小于或等于其平方根的因子,那么验证时就只需要验证到其平方根就可以了
int isPrime(int n)
{
for (int i=2; i<=sqrt(n); i++ ){
if(n%i==0){ // 如果不为素数返回0
return 0;
}
}
return 1; // 反之则返回1
}
这里我们选择根号法
#include <iostream>
#include <cmath>
using namespace std;
bool JudgePrime(int n){
for(int i=2;i<=(int)sqrt(n);i++){
if(n%i==0){
return 1;
}
}
return 0;
}
int main(){
int n;//输入正整数n
cin>>n;
if(n>0&&n<=1000){//判断n是否满足条件
if(JudgePrime(n)==1||n==1){
cout<<"No"<<endl;
}else{
cout<<"Yes"<<endl;
}
}
return 0;
}