-
题目描述:
-
给定一个数n,要求判断其是否为素数(0,1,负数都是非素数)。
-
输入:
-
测试数据有多组,每组输入一个数n。
-
输出:
-
对于每组输入,若是素数则输出yes,否则输入no。
-
样例输入:
13
-
样例输出:
yes
素数判定是算法里面非常基础和经典的题目.所谓素数,指得是除了1和此整数自身外,无法被其他自然数整除的自然数.比如,1和2都是素数,但是4不是,因为4可以除了自己和1之外还可以被2整除.
根据素数的定义,我们很容易的可以得到
解法1:
#include <iostream>
using namespace std;
int main()
{
int num;
while(cin>>num){
bool flag=true;
if(num<=0 || num==1){
cout<<"no"<<endl;
}
else{
for(int i=2;i<num;i++){
if(num%i==0){
cout<<"no"<<endl;
flag = false;
break;
}
}
if(flag){
cout<<"yes"<<endl;
}
}
}
return 0;
}
事实上,由素数判定定则,仅需要从2到根号num进行除法尝试,若从2到根号num之间都没有数能整除num,则num必为素数
解法2:
#include <iostream>
using namespace std;
int main()
{
int num;
while(cin>>num){
bool flag=true;
if(num<=0 || num==1){
cout<<"no"<<endl;
}
else{
for(int i=2;i<num/2;i++){//这里简化了
if(num%i==0){
cout<<"no"<<endl;
flag = false;
break;
}
}
if(flag){
cout<<"yes"<<endl;
}
}
}
return 0;
}