素数一般指质数。质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
题目:输入一个数,判断这个数是不是素数。
方法一:从2开始循环直到n-1
#include <bits/stdc++.h>
using namespace std; //名字空间
int main()
{
int n,i;
cin>>n;
if(n==1 || n==2){
cout<<"不是素数"<<endl;
return 0;
}
for(i=2;i<n;i++){
if(n%i==0){
break;
}
}
if(i==n) cout<<"是素数"<<endl;
else cout<<"不是素数"<<endl;
}
方法二:去除偶数,从3循环到n-1,循环的是奇数
根据素数定义,偶数一定不是素数,所以我们可以不用循环偶数,循环变量的增量可以直接从最小的奇数开始,每次增加2
#include <bits/stdc++.h>
using namespace std; //名字空间
int main() //主函数
{
int n,i;
cin>>n;
if(n==1 || n==2){
cout<<"不是素数"<<endl;
return 0;
}
for(i=3;i<n;i+=2){
if(n%i==0){
break;
}
}
if(i>=n) cout<<"是素数"<<endl;
else cout<<"不是素数"<<endl;
}
方法三:去除偶数,从3循环到n/2,循环的是奇数
在方法二的基础上改良,从3循环到n/2就可以了,
不能被3整除的数一定也不能被6整除
#include <bits/stdc++.h>
using namespace std; //名字空间
int main() //主函数
{
int n,i;
cin>>n;
if(n==1 || n==2){
cout<<"不是素数"<<endl;
return 0;
}
for(i=3;i<=n/2;i+=2){
if(n%i==0){
break;
}
}
if(i>n/2) cout<<"是素数"<<endl;
else cout<<"不是素数"<<endl;
}
方法四:利用数学函数sqrt()
在方法三的基础上改良,从3循环到sqrt(n)就可以了
#include <bits/stdc++.h>
using namespace std; //名字空间
int main() //主函数
{
int n,i;
cin>>n;
if(n==1 || n==2){
cout<<"不是素数"<<endl;
return 0;
}
for(i=3;i<=sqrt(n);i+=2){
if(n%i==0){
break;
}
}
if(i>sqrt(n)) cout<<"是素数"<<endl;
else cout<<"不是素数"<<endl;
}