本文主要是介绍练习五1004判决数素的个数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
描述
输入两个整数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不是数素,
这篇关于练习五1004判决数素的个数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!