【题目描述】
编程求2∼n2∼𝑛(n𝑛为大于22的正整数)中有多少个素数。
【输入】
输入n(2≤n≤50000)𝑛(2≤𝑛≤50000)。
【输出】
素数个数。
【输入样例】
10
【输出样例】
4
这道题,可以使用素数函数:
bool pd(int x)
{
if(x==1 || x==0) return 0; //特判,x如果等于0或1,则不是素数
for(int i=2;i<=x/i;i++) //i<=x/i用来省去不需要算的部分
{
if(x%i==0)
{
return 0; //如果能整除,x则不是素数
}
}
return 1; //一直没有被整除过,x是素数
}
从0遍历到n,如果是素数,计数器++
代码如下
#include<bits/stdc++.h>
using namespace std;
bool pd(int x)
{
if(x==1 || x==0) return 0; //特判,x如果等于0或1,则不是素数
for(int i=2;i<=x/i;i++) //i<=x/i用来省去不需要算的部分
{
if(x%i==0)
{
return 0; //如果能整除,x则不是素数
}
}
return 1; //一直没有被整除过,x是素数
}
int n;
int sum;
int main(){
cin>>n;
for(int i=0;i<n;i++)
{
if(pd(i)) sum++; //i是质数,计数器++
}
cout<<sum;
return 0;
}
此代码仅供参考,请勿纯抄