题目描述
编程求 2 ~ n(n 为大于 22 的正整数)中有多少个素数。
输入格式
输入 n(2≤n≤50000)。
输出格式
素数个数。
思路
这题和B2085类似,只是运算方法不同
C++判断一个数为质数
bool 函数名(long long num){
if(num==1) return false;//特判是否为1
if(num==2) return true;//特判是否为2
for(int j=2;j<=sqrt(num);j++){
if(num%j==0) return false;
}
return true;
}
全部代码
#include<iostream>
#include<cmath>
using namespace std;
bool an(long long num){//前头已经讲了
if(num==1) return false;
if(num==2) return true;
for(int j=2;j<=sqrt(num);j++){
if(num%j==0) return false;
}
return true;
}
int main(){
long long a,b=0;//用long long以防万一
cin>>a;
for(int i=2;i<=a;i++){
if(an(i)){//判断是否为质数
b++;//计数器加一
}
}
cout<<b<<endl;//输出
return 0;
}