题目如下:
问题描述
给定区间[L, R] , 请计算区间中素数的个数。
输入格式
两个数L和R。
输出格式
一行,区间中素数的个数。
样例输入
2 11
样例输出
5
数据规模和约定
2 <= L <= R <= 2147483647 R-L <= 1000000
---------分割线---------
这题懂筛法的人看程序应该很容易。我自己当时有点思路但是不知道怎么下手,还是看别人的blog才懂的,首先从2到sqrt(R)中找素数,然后在L到R中筛出合数,具体看代码吧。
#include#include #define ll long long intint t[1000001];int vis[1000001];int sum=0;void f(ll a, ll b) { ll i,j; for(i=2;i*i (a+i-1)/i?2:(a+i-1)/i)*i;j