hdu 5901 Count primes (大素数模板)

题意:

求区间[1,N]的质数的个数(1≤N≤1011)。

Count primes
复杂度大概O(n^(3/4))

#include <bits/stdc++.h>  
#define ll long long  
using namespace std;  
ll f[340000],g[340000],n;  
void init(){  
    ll i,j,m;  
    for(m=1;m*m<=n;++m)f[m]=n/m-1;  
    for(i=1;i<=m;++i)g[i]=i-1;  
    for(i=2;i<=m;++i){  
        if(g[i]==g[i-1])continue;  
        for(j=1;j<=min(m-1,n/i/i);++j){  
            if(i*j<m)f[j]-=f[i*j]-g[i-1];  
            else f[j]-=g[n/i/j]-g[i-1];  
        }  
        for(j=m;j>=i*i;--j)g[j]-=g[j/i]-g[i-1];  
    }  
}  
int main(){  
    while(scanf("%I64d",&n)!=EOF){  
        init();  
        cout<<f[1]<<endl;  
    }  
    return 0;  
}  

代码二:

复杂度O(n^(2/3))

//Meisell-Lehmer  
//G++ 218ms 43252k  
#include<cstdio>  
#include<cmath>  
using namespace std;  
#define LL long long  
const int N = 5e6 + 2;  
bool np[N];  
int prime[N], pi[N];  
int getprime()  
{  
    int cnt = 0;  
    np[0] = np[1] = true;  
    pi[0] = pi[1] = 0;  
    for(int i = 2; i < N; ++i)  
    {  
        if(!np[i]) prime[++cnt] = i;  
        pi[i] = cnt;  
        for(int j = 1; j <= cnt && i * prime[j] < N; ++j)  
        {  
            np[i * prime[j]] = true;  
            if(i % prime[j] == 0)   break;  
        }  
    }  
    return cnt;  
}  
const int M = 7;  
const int PM = 2 * 3 * 5 * 7 * 11 * 13 * 17;  
int phi[PM + 1][M + 1], sz[M + 1];  
void init()  
{  
    getprime();  
    sz[0] = 1;  
    for(int i = 0; i <= PM; ++i)  phi[i][0] = i;  
    for(int i = 1; i <= M; ++i)  
    {  
        sz[i] = prime[i] * sz[i - 1];  
        for(int j = 1; j <= PM; ++j) phi[j][i] = phi[j][i - 1] - phi[j / prime[i]][i - 1];  
    }  
}  
int sqrt2(LL x)  
{  
    LL r = (LL)sqrt(x - 0.1);  
    while(r * r <= x)   ++r;  
    return int(r - 1);  
}  
int sqrt3(LL x)  
{  
    LL r = (LL)cbrt(x - 0.1);  
    while(r * r * r <= x)   ++r;  
    return int(r - 1);  
}  
LL getphi(LL x, int s)  
{  
    if(s == 0)  return x;  
    if(s <= M)  return phi[x % sz[s]][s] + (x / sz[s]) * phi[sz[s]][s];  
    if(x <= prime[s]*prime[s])   return pi[x] - s + 1;  
    if(x <= prime[s]*prime[s]*prime[s] && x < N)  
    {  
        int s2x = pi[sqrt2(x)];  
        LL ans = pi[x] - (s2x + s - 2) * (s2x - s + 1) / 2;  
        for(int i = s + 1; i <= s2x; ++i) ans += pi[x / prime[i]];  
        return ans;  
    }  
    return getphi(x, s - 1) - getphi(x / prime[s], s - 1);  
}  
LL getpi(LL x)  
{  
    if(x < N)   return pi[x];  
    LL ans = getphi(x, pi[sqrt3(x)]) + pi[sqrt3(x)] - 1;  
    for(int i = pi[sqrt3(x)] + 1, ed = pi[sqrt2(x)]; i <= ed; ++i) ans -= getpi(x / prime[i]) - i + 1;  
    return ans;  
}  
LL lehmer_pi(LL x)  
{  
    if(x < N)   return pi[x];  
    int a = (int)lehmer_pi(sqrt2(sqrt2(x)));  
    int b = (int)lehmer_pi(sqrt2(x));  
    int c = (int)lehmer_pi(sqrt3(x));  
    LL sum = getphi(x, a) +(LL)(b + a - 2) * (b - a + 1) / 2;  
    for (int i = a + 1; i <= b; i++)  
    {  
        LL w = x / prime[i];  
        sum -= lehmer_pi(w);  
        if (i > c) continue;  
        LL lim = lehmer_pi(sqrt2(w));  
        for (int j = i; j <= lim; j++) sum -= lehmer_pi(w / prime[j]) - (j - 1);  
    }  
    return sum;  
}  
int main()  
{  
    init();  
    LL n;  
    while(~scanf("%lld",&n))  
    {  
        printf("%lld\n",lehmer_pi(n));  
    }  
    return 0;  
}  

打表法

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <string>
#include <queue>
#include <cmath>
#include <vector>
#include <stack>
#include <map>
using namespace std;
typedef long long ll;
const int MAX_L = 100000000;
long long ans[2000] = {
3001134,2760321,2682941,2634541,2600381,2573007,2551201,2532800,2516712,2502829,2489489,2479347,2468692,2459536,2450250,2442998,2435787,2427249,2422256,2416063,2409816,2405120,2397805,2394430,2388971,2384657,2380883,2376257,2371936,2369119,2364554,2360751,2357436,2353750,2351001,2348402,2343928,2341578,2338297,2336062,2334106,2330133,2328083,2325513,2322827,2321991,2317537,2315970,2313327,2311597,2310475,2308321,2304338,2303687,2300450,2299616,2297899,2295854,2294276,2291250,2290200,2288904,2286763,2285401,2283442,2281582,2280917,2278450,2277891,2276246,2275117,2272686,2272425,2269956,2269573,2267104,2265782,2264649,2263378,2261809,2260054,2259203,2258852,2256182,2256361,2254784,2253650,2252556,2250889,2249980,2248941,2248055,2246585,2246263,2244512,2243064,2242165,2241637,2240152,2238526,2238754,2237016,2236831,2235518,2234769,2233849,2231789,2231316,2230558,2229897,2228192,2229152,2227808,2226622,2225627,2223631,2223645,2222354,2222067,2221750,2219099,2220489,2219437,2218476,2216073,2217479,2214750,2214027,2213399,2212871,2213546,2212597,2210769,2210353,2209159,2209274,2207652,2206903,2206411,2206220,2205632,2205222,2203297,2202397,2202346,2201555,2202089,2200014,2200591,2199117,2198217,2196996,2196888,2196403,2195702,2195699,2196011,2193453,2193992,2193681,2192651,2192461,2190651,2190442,2190805,2190065,2188863,2188239,2187736,2186860,2187078,2186405,2185258,2184507,2184058,2183724,2183766,2182367,2182080,2181525,2181491,2180942,2179467,2178067,2180367,2179880,2177687,2177499,2177394,2175803,2175798,2176082,2175029,2176175,2174401,2173459,2172966,2173075,2171810,2171924,2171134,2170796,2169951,2169234,2168926,2169537,2168487,2167624,2167312,2166456,2164583,2167924,2166025,2165402,2164696,2165423,2163735,2163031,2163157,2162673,2161848,2162110,2162349,2161327,2158987,2159649,2159143,2159666,2158220,2159209,2158948,2159319,2156307,2158826,2155958,2155859,2155099,2155851,2154110,2154449,2153912,2154543,2153927,2152204,2153875,2151858,2151621,2151202,2152116,2151423,2150639,2149532,2148911,2149310,2148611,2148718,2148643,2148586,2147771,2146947,2146793,2146352,2145365,2146379,2145588,2144701,2144797,2145094,2144029,2143382,2142942,2143042,2143556,2141886,2142215,2142294,2140627,2140054,2140942,2140098,2139402,2138244,2139868,2139399,2138656,2139326,2138347,2137344,2137183,2137610,2136367,2137222,2137073,2134762,2135898,2136267,2135030,2133517,2134860,2133805,2133532,2133787,2134628,2132360,2132721,2132024,2131369,2131997,2130811,2130587,2131917,2130676,2130987,2130202,2128477,2129642,2129206,2128118,2128276,2127988,2128129,2127262,2127214,2127622,2126351,2126741,2125511,2125340,2126166,2125351,2124866,2124782,2125208,2124565,2123519,2124623,2123403,2123775,2123315,2122371,2122381,2121688,2121090,2122935,2120751,2120774,2120990,2120229,2119728,2120027,2119988,2120134,2118200,2119619,2118349,2117855,2118727,2118303,2118203,2117492,2116865,2117348,2115287,2116632,2116638,2115788,2115194,2116099,2115131,2115819,2113688,2114879,2114509,2113575,2114909,2112672,2112167,2113166,2113497,2112766,2112813,2111982,2113250,2112178,2111750,2111966,2110184,2111673,2110382,2110713,2109296,2108919,2110337,2110100,2109179,2107943,2109205,2107911,2108558,2108350,2107678,2107819,2106833,2107875,2107448,2106538,2106189,2107323,2105835,2105595,2106999,2104932,2105201,2105400,2104347,2104594,2105499,2104185,2104255,2103228,2104146,2103874,2103364,2102134,2103299,2102457,2102528,2101375,2101960,2102344,2101015,2102362,2101312,2101671,2100543,2099179,2100812,2099820,2099026,2100641,2099876,2098573,2098956,2100142,2097948,2097834,2097178,2098606,2097870,2098035,2097859,2097255,2098583,2096038,2097249,2095701,2096285,2095765,2095963,2095477,2095892,2094822,2094680,2095979,2093417,2094703,2094076,2094062,2094763,2094531,2094286,2093699,2094519,2092321,2092505,2091975,2093447,2092261,2092044,2092841,2092672,2091598,2091889,2089903,2091640,2090407,2091331,2090340,2089085,2089695,2090561,2089461,2089238,2089941,2088449,2088961,2089622,2088404,2088328,2089513,
2089045,2086920,2087736,2088554,2087162,2086965,2086648,2086742,2086965,2086163,2086752,2087390,2084643,2086502,2084374,2086663,2085755,2084897,2085281,2085258,2084479,2084892,2084133,2084773,2084604,2084689,2084029,2084229,2082909,2083742,2083812,2082891,2083399,2082422,2082861,2082063,2080827,2082472,2082719,2081390,2081769,2082520,2080676,2081264,2081490,2081506,2079444,2080388,2081057,2079969,2081089,2079826,2080123,2079028,2079828,2078778,2077584,2078301,2079632,2078510,2079305,2077831,2078613,2077186,2076869,2077296,2076817,2077310,2077316,2077690,2076827,2076160,2078193,2075320,2077341,2076867,2075075,2076225,2075820,2076164,2075232,2075130,2074746,2074413,2074560,2074711,2074103,2074575,2074388,2074152,2074079,2073233,2072632,2073757,2074318,2073485,2073318,2072699,2072356,2071877,2072896,2071640,2072925,2073277,2072310,2071604,2071661,2071231,2071022,2070319,2071555,2071653,2071098,2071839,2070556,2070351,2070737,2069209,2070492,2068323,2069939,2069516,2068743,2069399,2070031,2068504,2069738,2068441,2069054,2068316,2067313,2068196,2067752,2068220,2067570,2067536,2068002,2067740,2066987,2067794,2067176,2066931,2066582,2065472,2067323,2066890,2066320,2065380,2065859,2066512,2065359,2065428,2064926,2064513,2065329,2066274,2064653,2065289,2064314,2065544,2064484,2064080,2064166,2063651,2063806,2062846,2062885,2064222,2063093,2063023,2062575,2062686,2062446,2062700,2061663,2061221,2063564,2061400,2063087,2061572,2061174,2061761,2061820,2060806,2062278,2061627,2060255,2061793,2061635,2060436,2060565,2060874,2060009,2060242,2060515,2059240,2059542,2060101,2060277,2060267,2058604,2057755,2058998,2059688,2059432,2058612,2059427,2059113,2058528,2058318,2057879,2058224,2058399,2057037,2059285,2057151,2057101,2057090,2058598,2057697,2057825,2056214,2056706,2057459,2056410,2056016,2055390,2055717,2055192,2056313,2056648,2055475,2056829,2055655,2054764,2054845,2055344,2054403,2055626,2053465,2055092,2054640,2054072,2054137,2054526,2054137,2054305,2054309,2052510,2053655,2053551,2053761,2053401,2053573,2052775,2052283,2053469,2052422,2052867,2053394,2052875,2053190,2051417,2053458,2051685,2050360,2051535,2051280,2051687,2051654,2051435,2051245,2049950,2051442,2050649,2050453,2049389,2050103,2050707,2051763,2050535,2049620,2048893,2049254,2050133,2049550,2049664,2049798,2050011,2047429,2047805,2050234,2049069,2048489,2049764,2049036,2048897,2048457,2047850,2048681,2046559,2048477,2046345,2048034,2047972,2049077,2046952,2047433,2047418,2046710,2049377,2046393,2045991,2046985,2046393,2048083,2045579,2046319,2045879,2046675,2044512,2044797,2045093,2045636,2045544,2046255,2045681,2045039,2045811,2044723,2046125,2045577,2044182,2043415,2045511,2045322,2044183,2044070,2044432,2044711,2044251,2044306,2044095,2043827,2044240,2042968,2043216,2044390,2043453,2042674,2044155,2042398,2041815,2043132,2041639,2040726,2042893,2043025,2041776,2040385,2042764,2041961,2041240,2041621,2041042,2042575,2040830,2041905,2041521,2040692,2041275,2040854,2041291,2040713,2041469,2041039,2041146,2040330,2039407,2041105,2039206,2040877,2039253,2040287,2040461,2039467,2038839,2039350,2039213,2040132,2039516,2038828,2039751,2038611,2038877,2039058,2039200,2038027,2038666,2038277,2039129,2039244,2037143,2038311,2037472,2037969,2037678,2037660,2036808,2036329,2037775,2037435,2037797,2037681,2036644,2037549,2036866,2037361,2035795,2036949,2035933,2035112,2036035,2036390,2035800,2035742,2035253,2035592,2035862,2036608,2036317,2034797,2036318,2034936,2034267,2035248,2036320,2034421,2035288,2034875,2033628,2033286,2034244,2034233,2033925,2035025,2035015,2033785,2033673,2033111,2035167,2032652,2033437,2033656,2032575,2033653,2033946,2033333,2033014,2033665,2032246,2032713,2031788,2032831,2032174,2032486,2032048,2031696,2032081,2032917,2032380,2031758,2030743,2032779,2031353,2031603,2032048,2031752,2031636,2032033,2031436,2030281,2031483,2031618,2031505,2030558,2031272,2030063,2029551,2030545,2030727,2030287,2029833,2028659,2030561,2029519,2030571,2029687,2030070,2030812,
2028932,2027692,2028905,2028934,2028522,2030516,2030250,2029144,2028695,2029095,2029265,2028340,2029442,2028891,2028395,2028626,2028062,2027592,2028706,2027826,2029176,2027815,2027478,2028573,2027619,2026836,2027610,2026420,2026571,2028144,2027388,2027281,2028076,2027131,2027426,2026643,2026609,2026670,2025662,2027900,2026399,2025075,2025314,2025284,2025876,2024631,2026543,2026242,2025767,2025553,2027008,2026076,2024839,2025962,2025372,2025403,2023559,2025399,2024728,2024214,2025925,2025106,2024937,2023987,2025425,2024984,2024941,2024674,2024212,2023798,2024230,2023189,2023835,2024799,2022780,2023791,2023415,2023234,2023652,2022683,2022597,2023244,2022716,2022557,2023676,2023180,2023231,2024392,2022779,2021060,2021851,2022560,2022016,2022461,2022584,2022872,2021814,2022123,2022391,2022731,2022138,2021650,2020924,2020954,2020633,2021790,2020893,2021319,2021169,2021449,2021251,2021032,2020870,2020171,2021409,2019797,2020749,2021137,2020583,2019735,2020322,2020629,2020020,2020759,2019329,2019680,2020140,2020440,2019059,2020389,2018534,2018347,2020334,2019159,2019708,2019495,2018678,2018325,2019069,2019746,2017998,2018652,2019184,2019317,2018407,2018822,2017951,2015776,2019873,2018186,2017662,2018612,2019575,2017594,2017256,2017253,2017738,2016718,2018094,2016801,2018006,2017429,2017368,2017132,2017165,2016955,2016962,2016869,2016213,2015284,2015834,2016306,2016227,2017976,2016864,2016543,2015181,2015725,2016474,2016282,2016297,2015911,2016379,2016219,2015135,2016064,2016604,2014955,2015159,2016021,2015664,2014866,2014715,2014537,2015467,2014879,2014849,2014265,2015358,2015620,2013210,2016036,2014711,2014931,2014717,2014904,2013978,2014613,2013563,2014673,2014079,2013658,2013645,2013412,2013352,2014762,2013251,2014352,2011588,2013952,2012930,2013363,2013019,2013588,2012702,2012526,2012703,2011560,2013606,2012390,2011874,2012982,2011936,2013099,2012287,2012515,2012259,2011449,2012415,2012726,2011690,2011901,2010653,2012913,2012575,2012091,2011255,2011114,2011268,2010989,2009901,2011548,2011407,2011850,2011638,2010435,2011150,2010180,2011983,2011745,2010553,2010275,2010281,2010128,2010341,2009709,2010248,2010687,2010406,2009785,2009832,2010910,2011324,2009524,2008799,2010842,2008995,2009729,2008521,2009955,2010010,2010400,2009096,2009334,2008686,2009226,2008972,2009358,2008495,2008538,2007422,2009072,2007839,2008348,2009449,2008377,2008118,2008591,2008127,2008584,2008101,2008763,2008644,2008545,2007554,2007286,2008285,2008300,2008692,2006244,2006766,2008192,2006647,2008056,2006501,2006628,2007656,2007292,2006306,2006655,2006958,2007077,2006353,2008081,2007489,2006136,2006714,2006742,2005551,2006067,2006901,2006344,2006419,2005272,2005627,2006230,2005324,2006881,2004850,2005660,2005333,2005719,2006637,2005235,2005737,2004343,2005779,2004622,2005565,2005829,2005838,2004999,2005172,2005498,2005005,2003775,2004036,2005815,2005741,2003103,2004646,2003183,2004461,2004252,2005768,2004008,2004879,2004856,2004123,2003600,2003996,2004783,2003594,2004819,2003109,2003671,2003416,2003996,2003323,2004657,2004291,2002858,2002774,2003457,2003221,2002422,2003611,2003783,2001928,2003248,2002263,2002834,2004838,2002719,2003015,2000953,2002336,2003242,2002099,2002294,2001856,2001366,2002543,2000959,2001923,2001279,2002304,2001755,2001395,2002981,2000808,2001241,2001351,2002792,2000797,2001175,2001474,1999826,2001950,2001285,2002623,2001371,2001965,2001341,2000462,2001644,2001763,2000851,2001435,2000815,1998694,1999659,1999701,2001101,1999963,1999416,1998966,2000016,1999408,1999053,1999794,1999443,2000274,2000275,1999229,2000582,2000600,1998869,1999048,1998934,2000580,1999792,1999451,1998637,1998710,1999196,1999262,1999098,1998986,1999130,1999037,1999090,1999085,1999027,1999306,1998447,1998336,1998948,1998660,1997484,1998033,1998227,1997650,1997837,1999145,1997073,1997438,1997214,1996548,1997645,1997759,1998162,1997449,1997705,1997880,1998291,1996738,1998812,1996188,1998435,1997360,1995959,1997970,1997103,1997059,1996422,1997067,1997413,1996315,1996424,
1997248,1997440,1996101,1996223,1996804,1996336,1997059,1996403,1995720,1996580,1996351,1996790,1996368,1996286,1995926,1994439,1995765,1996084,1996698,1995973,1995056,1995770,1994895,1996174,1995490,1996049,1995013,1995339,1996096,1996147,1995554,1995848,1995258,1994724,1995268,1993728,1995402,1995889,1993589,1995006,1994733,1995124,1994858,1994381,1995175,1994020,1993273,1994702,1993993,1994087,1994310,1993322,1993938,1994508,1992708,1993052,1993460,1993591,1993185,1992732,1993833,1993321,1993243,1993347,1994672,1992567,1993570,1994066,1993012,1993637,1992476,1993056,1993660,1993698,1991496,1993584,1992890,1992589,1993080,1993581,1992774,1993514,1992321,1991631,1991607,1992117,1993009,1992173,1992152,1991084,1992447,1991732,1991965,1991449,1991743,1991975,1992932,1990844,1990603,1992278,1991153,1991870,1991201,1990850,1991623,1991802,1991281,1991558,1991817,1991255,1990602,1990221,1991572,1990914,1990901,1990515,1989570,1991261,1990720,1990314,1991211,1990057,1991870,1989744,1990399,1990814,1989521,1990674,1990654,1990062,1989262,1989531,1989956,1990351,1990061,1990556,1989434,1988899,1990060,1990087,1988033,1990147,1990851,1988711,1990769,1989214,1989415,1989650,1987522,1989951,1989906,1988918,1989858,1987531,1989995,1989022,1988284,1988073,1988395,1990015,1988540,1987401,1988755,1988340,1988598,1988712,1989580,1988438,1988710,1989546,1988433,1987962,1987506,1988482,1987748,1985813,1989015,1988356,1987803,1987420,1987712,1987870,1986480,1987128,1987200,1987359,1986894,1988537,1987471,1987500,1988770,1987483,1987182,1986078,1987334,1987378,1987205,1986048,1987940,1986567,1986359,1987183,1985686,1987151,1987451,1986824,1986169,1987344,1985151,1985107,1986010,1985987,1986682,1987053,1986264,1986083,1986804,1985556,1986135,1986201,1986774,1984594,1985331,1985249,1985178,1985004,1984677,1984812,1986355,1985776,1985225,1985157,1984668,1984537,1985888,1986013,1985029,1984811,1985872,1985380,1985348,1984502,1985475,1985641,1984789,1984869,1984769,1985278,1983012,1984222,1984595,1985021,1984098,1985772,1983809,1984055,1982970,1983219,1983662,1984032,1985103,1983158,1983246,1984633,1984260,1984220,1984201,1983551,1984002,1983450,1984118,1983750,1983279,1984586,1982293,1983121,1982752,1984330,1983048,1983353,1983529,1984240,1982316,1982425,1982827,1982674,1983086,1983522,1982967,1983949,1982002,1983143,1982113,1981350,1982533,1983597,1981177,1981456,1981635,1982325,1982982,1982115,1981767,1982566,1981934,1982676,1982110,1981883,1981413,1982504,1982065,1981555,1982337,1982106,1981163,1981586,1981707,1982148,1980108,1981338,1980920,1982518,1980092,1981638,1982149,1981196,1981089,1981212,1981692,1982419,1978942,1981364,1980199,1981297,1981631,1980676,1980754,1980006,1980660,1981152,1980572,1980227,1981753,1980706,1979924,1979621,1981426,1981409,1979745,1979005,1980863,1979440,1980239,1979284,1978802,1979804,1978858,1980504,1980434,1980473,1979586,1978944,1979647,1979994,1979749,1979824,1979426,1980236,1979941,1979269,1978304,1980398,1979380,1979170,1979424,1979684,1979366,1979091,1978797,1979294,1978709,1979546,1978381,1978660,1979045,1978017,1978168,1978531,1978029,1978664,1978111,1978119,1979173,1977972,1977738,1978192,1978076,1978051,1978732,1978644,1978155,1978591,1977207,1978231,1977255,1976805,1977202,1977739,1978800,1977784,1977930,1977279,1977658,1977362,1977761,1977471,1977639,1977408,1977630,1977821,1976450,1977662,1978222,1975940,1976705,1977119,1976187,1976174,1977117,1977734,1976615,1976102,1976369,1975703,1976365,1976510,1977290,1976193,1977425,1976521,1976325,1977213,1975816,1976766,1976285,1976196,1976343,1975652,1976383,1975415,1975916,1976844,1976053,1975207,1975925,1976905,1975275,1976590,1976070,1976412,1975817,1976640,1975656,1975532,1976323,1974123,1974605,1975264,1975268,1975480,1975912,1975218,1974995,1974520,1974970,1974786,1975047,1974348,1975270,1975454,1973220,1974142,1974298,1975825,1974429,1975716,1974868,1974253,1974548,1974748,1974858,1973372,1973223,1974288,1974615,1974234,1974034,1974140,1974685,1974536};
bool is_prime[MAX_L];
bool is_prime_small[MAX_L];
//分段打表
int segment_seive(ll a,ll b)
{
    for(int i=0;(ll)i*i<b;i++)
        is_prime_small[i] = true;
    for(int i = 0;i<b-a;i++)
        is_prime[i] = true;
    for(int i=2;(ll)i*i<b;i++)
    {
        if(is_prime_small[i])
        {
            for(int j = 2*i;(ll)j*j<b;j+=i)
                is_prime_small[j] = false;
            for(ll j = max(2LL,(a+i-1)/i)*i;j<b;j+=i)
                is_prime[j-a] = false;
        }
    }
    int cnt = 0;
    for(int i = 0;i<b-a;i++)
    {
        if(is_prime[i] == true)
            cnt++;
    }
    return cnt;
}
int main()
{
    for(int i=1;i<2000;i++)
        ans[i] += ans[i-1];
    long long n;
    while(~scanf("%I64d",&n))
    {
        long long tt;
        long long pos = n/50000000;
        if(pos == 0)
            tt = segment_seive(1,n+1)-1;
        else
        {
            tt = ans[pos-1];
            tt+= segment_seive(pos*50000000,n+1);
        }
        printf("%I64d\n",tt);
    }

    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值