#include<bits/stdc++.h>
using namespace std;
bool is_prime(int n)//定义一个bool型函数用来判断是否为素数
{
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0)
return false;
}
return true;
}
int main()
{
int n;
cin>>n;
for(int i=2;i<=n;i++)
{
if(is_prime(i))
cout<<i<<" ";
}
return 0;
}
这一套模板其实已经可以应对大部分判断素数的题,与素数筛选的题
给出一个数x,判断它是否为素数,并输出所有它的素因子。
对时间有要求的就需要用到筛法,布尔筛
#include<bits/stdc++.h>
using namespace std;
int main(){
int t,n;
std::cin>>t;
while(t--){
std::cin>>n;
vector<int>ret;//存储素数因子
bool is_prime = false;//判断素数,加速用的
for(int i = 2;i <=sqrt(n); i ++){
if(n % i == 0){
ret.push_back(i);//因子
while(n % i == 0){//判断素数
n /= i;//加速,就是判断另一个因子是不是素数
is_prime = true;
}
}
}
if(n != 1) ret.push_back(n);//将素数本身输出,素数的因子除了1和本身
if(!is_prime) cout<<"isprime"<<endl;
else cout<<"noprime"<<endl;
for(int i = 0; i <= ret.size() - 1; i++)//将所有的已经存储在容器里的素数因子放出来
cout<<ret[i]<<" ";
cout<<endl;
}
return 0;
}