练习五1004判决数素的个数

来源:互联网 发布:linux vim查看行数 编辑:程序博客网 时间:2024/04/28 00:41

描述
输入两个整数X和Y,输出两者之间的素数个数(包括X和Y)。

输入
两个整数X和Y(1 <= X,Y <= 105)。
输出
输出一个整数,表示X,Y之间的素数个数(包括X和Y)。
样例输入
1 100
样例输出
25
代码:
#include<iostream>
using namespace std;
int main()
{
int a,b,sum=0,i,j;
cin>>a>>b;
if(a>b) 
{
int t=a;
a=b;
b=t;
}
bool f[100005]; f[1]=false;
for(i=2;i<=100000;i++)
{
f[i]=true;
}
for(i=2;i<=100000;i++)
{
if(f[i])
{
for(j=2*i;j<=100000;j+=i)
f[j]=false;
}
}
for(i=a;i<=b;i++)
{
if(f[i]) sum++;
}
cout<<sum;
return 0;
}
解题思路:运用预处理的方法降低运行消耗,用筛法求素数的基本思想是:把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。
细节方面:注意1不是数素,
0 0
原创粉丝点击