题目描述
求 X,Y 之间的素数个数(包括 X 和 Y)。
输入格式
两个整数 X 和 Y(1≤X,Y≤1.1×106)。
输出格式
输出一个整数,表示 X,Y 之间的素数个数(包括 X 和 Y)。
思路
和B2128一样,只是初始值不一样
#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,c=0;
cin>>a>>b;
for(int i=a;i<=b;i++){
if(an(i)){
c++;
}
}
cout<<c<<endl;
return 0;
}
(先别急着复制)
别问我咋知道的
分析
1、首先排除自定义函数的错(毕竟一直用这个函数,不可能错)
2、其次排除算法的错。
3、有可能a和b是反着来
结论
因此,可能样例是倒着来的
#include<iostream>
#include<cmath>
#include<algorithm>
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,c=0;
cin>>a>>b;
if(a>b)swap(a,b);//如果a>b,那么交换值
for(int i=a;i<=b;i++){
if(an(i)){
c++;
}
}
cout<<c<<endl;
return 0;
}