soknaly

Fastest Prime Algorithm

Nov 4th, 2015
230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 27.48 KB | None | 0 0
  1. <?php
  2.     // HERE IS EXAMPLE CODE. LETS HACK BY YOURSELF!
  3.    
  4.     // sqrt(10000000) -> 3162.27 -> 3163 -> 447 primes -> [2,3,5,6,...,3121,3137,3163]
  5.     $primeNums = array(2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999,3001,3011,3019,3023,3037,3041,3049,3061,3067,3079,3083,3089,3109,3119,3121,3137,3163);
  6.    
  7.    
  8.     // Total Primes
  9.     $t[0]=0;
  10.     $t[10000]=1229;
  11.     $t[20000]=2262;
  12.     $t[30000]=3245;
  13.     $t[40000]=4203;
  14.     $t[50000]=5133;
  15.     $t[60000]=6057;
  16.     $t[70000]=6935;
  17.     $t[80000]=7837;
  18.     $t[90000]=8713;
  19.     $t[100000]=9592;
  20.     $t[110000]=10453;
  21.     $t[120000]=11301;
  22.     $t[130000]=12159;
  23.     $t[140000]=13010;
  24.     $t[150000]=13848;
  25.     $t[160000]=14683;
  26.     $t[170000]=15497;
  27.     $t[180000]=16342;
  28.     $t[190000]=17170;
  29.     $t[200000]=17984;
  30.     $t[210000]=18807;
  31.     $t[220000]=19618;
  32.     $t[230000]=20437;
  33.     $t[240000]=21221;
  34.     $t[250000]=22044;
  35.     $t[260000]=22837;
  36.     $t[270000]=23642;
  37.     $t[280000]=24432;
  38.     $t[290000]=25224;
  39.     $t[300000]=25997;
  40.     $t[310000]=26800;
  41.     $t[320000]=27608;
  42.     $t[330000]=28404;
  43.     $t[340000]=29182;
  44.     $t[350000]=29977;
  45.     $t[360000]=30757;
  46.     $t[370000]=31522;
  47.     $t[380000]=32300;
  48.     $t[390000]=33067;
  49.     $t[400000]=33860;
  50.     $t[410000]=34614;
  51.     $t[420000]=35390;
  52.     $t[430000]=36162;
  53.     $t[440000]=36941;
  54.     $t[450000]=37706;
  55.     $t[460000]=38458;
  56.     $t[470000]=39223;
  57.     $t[480000]=40005;
  58.     $t[490000]=40766;
  59.     $t[500000]=41538;
  60.     $t[510000]=42291;
  61.     $t[520000]=43061;
  62.     $t[530000]=43825;
  63.     $t[540000]=44572;
  64.     $t[550000]=45322;
  65.     $t[560000]=46072;
  66.     $t[570000]=46819;
  67.     $t[580000]=47588;
  68.     $t[590000]=48351;
  69.     $t[600000]=49098;
  70.     $t[610000]=49861;
  71.     $t[620000]=50612;
  72.     $t[630000]=51341;
  73.     $t[640000]=52074;
  74.     $t[650000]=52831;
  75.     $t[660000]=53564;
  76.     $t[670000]=54309;
  77.     $t[680000]=55063;
  78.     $t[690000]=55815;
  79.     $t[700000]=56543;
  80.     $t[710000]=57306;
  81.     $t[720000]=58029;
  82.     $t[730000]=58789;
  83.     $t[740000]=59531;
  84.     $t[750000]=60238;
  85.     $t[760000]=60978;
  86.     $t[770000]=61733;
  87.     $t[780000]=62468;
  88.     $t[790000]=63206;
  89.     $t[800000]=63951;
  90.     $t[810000]=64683;
  91.     $t[820000]=65416;
  92.     $t[830000]=66161;
  93.     $t[840000]=66890;
  94.     $t[850000]=67617;
  95.     $t[860000]=68342;
  96.     $t[870000]=69095;
  97.     $t[880000]=69823;
  98.     $t[890000]=70555;
  99.     $t[900000]=71274;
  100.     $t[910000]=72026;
  101.     $t[920000]=72734;
  102.     $t[930000]=73474;
  103.     $t[940000]=74187;
  104.     $t[950000]=74907;
  105.     $t[960000]=75618;
  106.     $t[970000]=76350;
  107.     $t[980000]=77067;
  108.     $t[990000]=77777;
  109.     $t[1000000]=78498;
  110.     $t[1010000]=79251;
  111.     $t[1020000]=79970;
  112.     $t[1030000]=80702;
  113.     $t[1040000]=81403;
  114.     $t[1050000]=82134;
  115.     $t[1060000]=82832;
  116.     $t[1070000]=83548;
  117.     $t[1080000]=84270;
  118.     $t[1090000]=84976;
  119.     $t[1100000]=85714;
  120.     $t[1110000]=86450;
  121.     $t[1120000]=87166;
  122.     $t[1130000]=87884;
  123.     $t[1140000]=88602;
  124.     $t[1150000]=89302;
  125.     $t[1160000]=90030;
  126.     $t[1170000]=90764;
  127.     $t[1180000]=91490;
  128.     $t[1190000]=92225;
  129.     $t[1200000]=92938;
  130.     $t[1210000]=93614;
  131.     $t[1220000]=94358;
  132.     $t[1230000]=95051;
  133.     $t[1240000]=95745;
  134.     $t[1250000]=96469;
  135.     $t[1260000]=97182;
  136.     $t[1270000]=97900;
  137.     $t[1280000]=98610;
  138.     $t[1290000]=99332;
  139.     $t[1300000]=100021;
  140.     $t[1310000]=100730;
  141.     $t[1320000]=101433;
  142.     $t[1330000]=102146;
  143.     $t[1340000]=102852;
  144.     $t[1350000]=103544;
  145.     $t[1360000]=104258;
  146.     $t[1370000]=104967;
  147.     $t[1380000]=105690;
  148.     $t[1390000]=106385;
  149.     $t[1400000]=107126;
  150.     $t[1410000]=107805;
  151.     $t[1420000]=108487;
  152.     $t[1430000]=109205;
  153.     $t[1440000]=109928;
  154.     $t[1450000]=110630;
  155.     $t[1460000]=111331;
  156.     $t[1470000]=112047;
  157.     $t[1480000]=112752;
  158.     $t[1490000]=113458;
  159.     $t[1500000]=114155;
  160.     $t[1510000]=114886;
  161.     $t[1520000]=115588;
  162.     $t[1530000]=116279;
  163.     $t[1540000]=116965;
  164.     $t[1550000]=117663;
  165.     $t[1560000]=118376;
  166.     $t[1570000]=119057;
  167.     $t[1580000]=119758;
  168.     $t[1590000]=120451;
  169.     $t[1600000]=121127;
  170.     $t[1610000]=121846;
  171.     $t[1620000]=122540;
  172.     $t[1630000]=123250;
  173.     $t[1640000]=123942;
  174.     $t[1650000]=124634;
  175.     $t[1660000]=125335;
  176.     $t[1670000]=126051;
  177.     $t[1680000]=126753;
  178.     $t[1690000]=127428;
  179.     $t[1700000]=128141;
  180.     $t[1710000]=128837;
  181.     $t[1720000]=129522;
  182.     $t[1730000]=130213;
  183.     $t[1740000]=130902;
  184.     $t[1750000]=131608;
  185.     $t[1760000]=132292;
  186.     $t[1770000]=132971;
  187.     $t[1780000]=133671;
  188.     $t[1790000]=134359;
  189.     $t[1800000]=135072;
  190.     $t[1810000]=135776;
  191.     $t[1820000]=136448;
  192.     $t[1830000]=137166;
  193.     $t[1840000]=137841;
  194.     $t[1850000]=138542;
  195.     $t[1860000]=139249;
  196.     $t[1870000]=139952;
  197.     $t[1880000]=140641;
  198.     $t[1890000]=141338;
  199.     $t[1900000]=142029;
  200.     $t[1910000]=142718;
  201.     $t[1920000]=143414;
  202.     $t[1930000]=144125;
  203.     $t[1940000]=144810;
  204.     $t[1950000]=145502;
  205.     $t[1960000]=146186;
  206.     $t[1970000]=146859;
  207.     $t[1980000]=147529;
  208.     $t[1990000]=148219;
  209.     $t[2000000]=148933;
  210.     $t[2010000]=149638;
  211.     $t[2020000]=150328;
  212.     $t[2030000]=151021;
  213.     $t[2040000]=151711;
  214.     $t[2050000]=152382;
  215.     $t[2060000]=153078;
  216.     $t[2070000]=153772;
  217.     $t[2080000]=154445;
  218.     $t[2090000]=155131;
  219.     $t[2100000]=155805;
  220.     $t[2110000]=156504;
  221.     $t[2120000]=157187;
  222.     $t[2130000]=157884;
  223.     $t[2140000]=158557;
  224.     $t[2150000]=159250;
  225.     $t[2160000]=159962;
  226.     $t[2170000]=160629;
  227.     $t[2180000]=161319;
  228.     $t[2190000]=161998;
  229.     $t[2200000]=162662;
  230.     $t[2210000]=163363;
  231.     $t[2220000]=164023;
  232.     $t[2230000]=164718;
  233.     $t[2240000]=165398;
  234.     $t[2250000]=166081;
  235.     $t[2260000]=166769;
  236.     $t[2270000]=167470;
  237.     $t[2280000]=168164;
  238.     $t[2290000]=168826;
  239.     $t[2300000]=169511;
  240.     $t[2310000]=170201;
  241.     $t[2320000]=170863;
  242.     $t[2330000]=171535;
  243.     $t[2340000]=172206;
  244.     $t[2350000]=172873;
  245.     $t[2360000]=173563;
  246.     $t[2370000]=174254;
  247.     $t[2380000]=174916;
  248.     $t[2390000]=175621;
  249.     $t[2400000]=176302;
  250.     $t[2410000]=176962;
  251.     $t[2420000]=177654;
  252.     $t[2430000]=178326;
  253.     $t[2440000]=178983;
  254.     $t[2450000]=179684;
  255.     $t[2460000]=180371;
  256.     $t[2470000]=181039;
  257.     $t[2480000]=181711;
  258.     $t[2490000]=182398;
  259.     $t[2500000]=183072;
  260.     $t[2510000]=183748;
  261.     $t[2520000]=184423;
  262.     $t[2530000]=185120;
  263.     $t[2540000]=185792;
  264.     $t[2550000]=186462;
  265.     $t[2560000]=187134;
  266.     $t[2570000]=187812;
  267.     $t[2580000]=188511;
  268.     $t[2590000]=189204;
  269.     $t[2600000]=189880;
  270.     $t[2610000]=190533;
  271.     $t[2620000]=191214;
  272.     $t[2630000]=191886;
  273.     $t[2640000]=192567;
  274.     $t[2650000]=193256;
  275.     $t[2660000]=193951;
  276.     $t[2670000]=194613;
  277.     $t[2680000]=195278;
  278.     $t[2690000]=195959;
  279.     $t[2700000]=196645;
  280.     $t[2710000]=197324;
  281.     $t[2720000]=198019;
  282.     $t[2730000]=198664;
  283.     $t[2740000]=199321;
  284.     $t[2750000]=199993;
  285.     $t[2760000]=200664;
  286.     $t[2770000]=201349;
  287.     $t[2780000]=202015;
  288.     $t[2790000]=202678;
  289.     $t[2800000]=203362;
  290.     $t[2810000]=204052;
  291.     $t[2820000]=204747;
  292.     $t[2830000]=205414;
  293.     $t[2840000]=206118;
  294.     $t[2850000]=206789;
  295.     $t[2860000]=207443;
  296.     $t[2870000]=208116;
  297.     $t[2880000]=208769;
  298.     $t[2890000]=209447;
  299.     $t[2900000]=210109;
  300.     $t[2910000]=210790;
  301.     $t[2920000]=211453;
  302.     $t[2930000]=212124;
  303.     $t[2940000]=212804;
  304.     $t[2950000]=213453;
  305.     $t[2960000]=214105;
  306.     $t[2970000]=214799;
  307.     $t[2980000]=215458;
  308.     $t[2990000]=216129;
  309.     $t[3000000]=216816;
  310.     $t[3010000]=217486;
  311.     $t[3020000]=218145;
  312.     $t[3030000]=218808;
  313.     $t[3040000]=219465;
  314.     $t[3050000]=220136;
  315.     $t[3060000]=220793;
  316.     $t[3070000]=221457;
  317.     $t[3080000]=222152;
  318.     $t[3090000]=222838;
  319.     $t[3100000]=223492;
  320.     $t[3110000]=224168;
  321.     $t[3120000]=224845;
  322.     $t[3130000]=225511;
  323.     $t[3140000]=226177;
  324.     $t[3150000]=226835;
  325.     $t[3160000]=227512;
  326.     $t[3170000]=228180;
  327.     $t[3180000]=228843;
  328.     $t[3190000]=229534;
  329.     $t[3200000]=230209;
  330.     $t[3210000]=230895;
  331.     $t[3220000]=231569;
  332.     $t[3230000]=232241;
  333.     $t[3240000]=232928;
  334.     $t[3250000]=233577;
  335.     $t[3260000]=234239;
  336.     $t[3270000]=234916;
  337.     $t[3280000]=235582;
  338.     $t[3290000]=236252;
  339.     $t[3300000]=236900;
  340.     $t[3310000]=237573;
  341.     $t[3320000]=238233;
  342.     $t[3330000]=238910;
  343.     $t[3340000]=239555;
  344.     $t[3350000]=240230;
  345.     $t[3360000]=240853;
  346.     $t[3370000]=241541;
  347.     $t[3380000]=242208;
  348.     $t[3390000]=242877;
  349.     $t[3400000]=243539;
  350.     $t[3410000]=244216;
  351.     $t[3420000]=244882;
  352.     $t[3430000]=245554;
  353.     $t[3440000]=246239;
  354.     $t[3450000]=246909;
  355.     $t[3460000]=247555;
  356.     $t[3470000]=248209;
  357.     $t[3480000]=248846;
  358.     $t[3490000]=249482;
  359.     $t[3500000]=250150;
  360.     $t[3510000]=250801;
  361.     $t[3520000]=251464;
  362.     $t[3530000]=252094;
  363.     $t[3540000]=252757;
  364.     $t[3550000]=253412;
  365.     $t[3560000]=254080;
  366.     $t[3570000]=254750;
  367.     $t[3580000]=255390;
  368.     $t[3590000]=256057;
  369.     $t[3600000]=256726;
  370.     $t[3610000]=257418;
  371.     $t[3620000]=258088;
  372.     $t[3630000]=258774;
  373.     $t[3640000]=259426;
  374.     $t[3650000]=260064;
  375.     $t[3660000]=260714;
  376.     $t[3670000]=261376;
  377.     $t[3680000]=262078;
  378.     $t[3690000]=262716;
  379.     $t[3700000]=263397;
  380.     $t[3710000]=264052;
  381.     $t[3720000]=264723;
  382.     $t[3730000]=265410;
  383.     $t[3740000]=266068;
  384.     $t[3750000]=266717;
  385.     $t[3760000]=267384;
  386.     $t[3770000]=268016;
  387.     $t[3780000]=268671;
  388.     $t[3790000]=269330;
  389.     $t[3800000]=269987;
  390.     $t[3810000]=270643;
  391.     $t[3820000]=271325;
  392.     $t[3830000]=271999;
  393.     $t[3840000]=272645;
  394.     $t[3850000]=273322;
  395.     $t[3860000]=273972;
  396.     $t[3870000]=274618;
  397.     $t[3880000]=275269;
  398.     $t[3890000]=275930;
  399.     $t[3900000]=276611;
  400.     $t[3910000]=277262;
  401.     $t[3920000]=277920;
  402.     $t[3930000]=278595;
  403.     $t[3940000]=279243;
  404.     $t[3950000]=279921;
  405.     $t[3960000]=280564;
  406.     $t[3970000]=281202;
  407.     $t[3980000]=281870;
  408.     $t[3990000]=282504;
  409.     $t[4000000]=283146;
  410.     $t[4010000]=283806;
  411.     $t[4020000]=284464;
  412.     $t[4030000]=285132;
  413.     $t[4040000]=285809;
  414.     $t[4050000]=286490;
  415.     $t[4060000]=287133;
  416.     $t[4070000]=287786;
  417.     $t[4080000]=288456;
  418.     $t[4090000]=289109;
  419.     $t[4100000]=289774;
  420.     $t[4110000]=290437;
  421.     $t[4120000]=291065;
  422.     $t[4130000]=291717;
  423.     $t[4140000]=292349;
  424.     $t[4150000]=293010;
  425.     $t[4160000]=293672;
  426.     $t[4170000]=294343;
  427.     $t[4180000]=294994;
  428.     $t[4190000]=295667;
  429.     $t[4200000]=296314;
  430.     $t[4210000]=296984;
  431.     $t[4220000]=297628;
  432.     $t[4230000]=298291;
  433.     $t[4240000]=298919;
  434.     $t[4250000]=299583;
  435.     $t[4260000]=300243;
  436.     $t[4270000]=300887;
  437.     $t[4280000]=301543;
  438.     $t[4290000]=302175;
  439.     $t[4300000]=302824;
  440.     $t[4310000]=303486;
  441.     $t[4320000]=304152;
  442.     $t[4330000]=304793;
  443.     $t[4340000]=305449;
  444.     $t[4350000]=306084;
  445.     $t[4360000]=306724;
  446.     $t[4370000]=307377;
  447.     $t[4380000]=308038;
  448.     $t[4390000]=308700;
  449.     $t[4400000]=309335;
  450.     $t[4410000]=309976;
  451.     $t[4420000]=310655;
  452.     $t[4430000]=311338;
  453.     $t[4440000]=311994;
  454.     $t[4450000]=312666;
  455.     $t[4460000]=313321;
  456.     $t[4470000]=313981;
  457.     $t[4480000]=314627;
  458.     $t[4490000]=315310;
  459.     $t[4500000]=315948;
  460.     $t[4510000]=316601;
  461.     $t[4520000]=317239;
  462.     $t[4530000]=317885;
  463.     $t[4540000]=318516;
  464.     $t[4550000]=319164;
  465.     $t[4560000]=319823;
  466.     $t[4570000]=320496;
  467.     $t[4580000]=321146;
  468.     $t[4590000]=321786;
  469.     $t[4600000]=322441;
  470.     $t[4610000]=323103;
  471.     $t[4620000]=323759;
  472.     $t[4630000]=324404;
  473.     $t[4640000]=325055;
  474.     $t[4650000]=325706;
  475.     $t[4660000]=326322;
  476.     $t[4670000]=326987;
  477.     $t[4680000]=327653;
  478.     $t[4690000]=328320;
  479.     $t[4700000]=328964;
  480.     $t[4710000]=329616;
  481.     $t[4720000]=330269;
  482.     $t[4730000]=330912;
  483.     $t[4740000]=331575;
  484.     $t[4750000]=332219;
  485.     $t[4760000]=332861;
  486.     $t[4770000]=333516;
  487.     $t[4780000]=334144;
  488.     $t[4790000]=334801;
  489.     $t[4800000]=335439;
  490.     $t[4810000]=336096;
  491.     $t[4820000]=336751;
  492.     $t[4830000]=337382;
  493.     $t[4840000]=338060;
  494.     $t[4850000]=338694;
  495.     $t[4860000]=339339;
  496.     $t[4870000]=340008;
  497.     $t[4880000]=340644;
  498.     $t[4890000]=341313;
  499.     $t[4900000]=341992;
  500.     $t[4910000]=342643;
  501.     $t[4920000]=343277;
  502.     $t[4930000]=343930;
  503.     $t[4940000]=344585;
  504.     $t[4950000]=345235;
  505.     $t[4960000]=345875;
  506.     $t[4970000]=346558;
  507.     $t[4980000]=347219;
  508.     $t[4990000]=347872;
  509.     $t[5000000]=348513;
  510.     $t[5010000]=349152;
  511.     $t[5020000]=349791;
  512.     $t[5030000]=350449;
  513.     $t[5040000]=351087;
  514.     $t[5050000]=351715;
  515.     $t[5060000]=352383;
  516.     $t[5070000]=353022;
  517.     $t[5080000]=353670;
  518.     $t[5090000]=354325;
  519.     $t[5100000]=354971;
  520.     $t[5110000]=355603;
  521.     $t[5120000]=356244;
  522.     $t[5130000]=356899;
  523.     $t[5140000]=357559;
  524.     $t[5150000]=358198;
  525.     $t[5160000]=358842;
  526.     $t[5170000]=359487;
  527.     $t[5180000]=360118;
  528.     $t[5190000]=360759;
  529.     $t[5200000]=361407;
  530.     $t[5210000]=362066;
  531.     $t[5220000]=362715;
  532.     $t[5230000]=363365;
  533.     $t[5240000]=364012;
  534.     $t[5250000]=364685;
  535.     $t[5260000]=365315;
  536.     $t[5270000]=365964;
  537.     $t[5280000]=366617;
  538.     $t[5290000]=367246;
  539.     $t[5300000]=367900;
  540.     $t[5310000]=368554;
  541.     $t[5320000]=369191;
  542.     $t[5330000]=369834;
  543.     $t[5340000]=370483;
  544.     $t[5350000]=371131;
  545.     $t[5360000]=371773;
  546.     $t[5370000]=372415;
  547.     $t[5380000]=373068;
  548.     $t[5390000]=373722;
  549.     $t[5400000]=374362;
  550.     $t[5410000]=374992;
  551.     $t[5420000]=375632;
  552.     $t[5430000]=376289;
  553.     $t[5440000]=376939;
  554.     $t[5450000]=377574;
  555.     $t[5460000]=378233;
  556.     $t[5470000]=378874;
  557.     $t[5480000]=379497;
  558.     $t[5490000]=380148;
  559.     $t[5500000]=380800;
  560.     $t[5510000]=381438;
  561.     $t[5520000]=382061;
  562.     $t[5530000]=382694;
  563.     $t[5540000]=383361;
  564.     $t[5550000]=383979;
  565.     $t[5560000]=384613;
  566.     $t[5570000]=385268;
  567.     $t[5580000]=385904;
  568.     $t[5590000]=386545;
  569.     $t[5600000]=387202;
  570.     $t[5610000]=387835;
  571.     $t[5620000]=388473;
  572.     $t[5630000]=389111;
  573.     $t[5640000]=389754;
  574.     $t[5650000]=390378;
  575.     $t[5660000]=391019;
  576.     $t[5670000]=391654;
  577.     $t[5680000]=392292;
  578.     $t[5690000]=392927;
  579.     $t[5700000]=393606;
  580.     $t[5710000]=394241;
  581.     $t[5720000]=394908;
  582.     $t[5730000]=395540;
  583.     $t[5740000]=396172;
  584.     $t[5750000]=396826;
  585.     $t[5760000]=397462;
  586.     $t[5770000]=398079;
  587.     $t[5780000]=398716;
  588.     $t[5790000]=399353;
  589.     $t[5800000]=399993;
  590.     $t[5810000]=400647;
  591.     $t[5820000]=401279;
  592.     $t[5830000]=401906;
  593.     $t[5840000]=402547;
  594.     $t[5850000]=403204;
  595.     $t[5860000]=403831;
  596.     $t[5870000]=404466;
  597.     $t[5880000]=405107;
  598.     $t[5890000]=405784;
  599.     $t[5900000]=406429;
  600.     $t[5910000]=407077;
  601.     $t[5920000]=407744;
  602.     $t[5930000]=408393;
  603.     $t[5940000]=409039;
  604.     $t[5950000]=409672;
  605.     $t[5960000]=410311;
  606.     $t[5970000]=410944;
  607.     $t[5980000]=411580;
  608.     $t[5990000]=412224;
  609.     $t[6000000]=412849;
  610.     $t[6010000]=413510;
  611.     $t[6020000]=414148;
  612.     $t[6030000]=414812;
  613.     $t[6040000]=415413;
  614.     $t[6050000]=416040;
  615.     $t[6060000]=416706;
  616.     $t[6070000]=417321;
  617.     $t[6080000]=417974;
  618.     $t[6090000]=418602;
  619.     $t[6100000]=419246;
  620.     $t[6110000]=419898;
  621.     $t[6120000]=420539;
  622.     $t[6130000]=421175;
  623.     $t[6140000]=421812;
  624.     $t[6150000]=422449;
  625.     $t[6160000]=423094;
  626.     $t[6170000]=423752;
  627.     $t[6180000]=424379;
  628.     $t[6190000]=424998;
  629.     $t[6200000]=425648;
  630.     $t[6210000]=426292;
  631.     $t[6220000]=426894;
  632.     $t[6230000]=427547;
  633.     $t[6240000]=428179;
  634.     $t[6250000]=428816;
  635.     $t[6260000]=429466;
  636.     $t[6270000]=430113;
  637.     $t[6280000]=430749;
  638.     $t[6290000]=431413;
  639.     $t[6300000]=432073;
  640.     $t[6310000]=432719;
  641.     $t[6320000]=433353;
  642.     $t[6330000]=434002;
  643.     $t[6340000]=434635;
  644.     $t[6350000]=435265;
  645.     $t[6360000]=435902;
  646.     $t[6370000]=436528;
  647.     $t[6380000]=437137;
  648.     $t[6390000]=437765;
  649.     $t[6400000]=438410;
  650.     $t[6410000]=439040;
  651.     $t[6420000]=439683;
  652.     $t[6430000]=440318;
  653.     $t[6440000]=440929;
  654.     $t[6450000]=441562;
  655.     $t[6460000]=442221;
  656.     $t[6470000]=442853;
  657.     $t[6480000]=443481;
  658.     $t[6490000]=444118;
  659.     $t[6500000]=444757;
  660.     $t[6510000]=445399;
  661.     $t[6520000]=446039;
  662.     $t[6530000]=446685;
  663.     $t[6540000]=447314;
  664.     $t[6550000]=447955;
  665.     $t[6560000]=448595;
  666.     $t[6570000]=449229;
  667.     $t[6580000]=449868;
  668.     $t[6590000]=450527;
  669.     $t[6600000]=451159;
  670.     $t[6610000]=451800;
  671.     $t[6620000]=452462;
  672.     $t[6630000]=453077;
  673.     $t[6640000]=453697;
  674.     $t[6650000]=454337;
  675.     $t[6660000]=454950;
  676.     $t[6670000]=455598;
  677.     $t[6680000]=456228;
  678.     $t[6690000]=456846;
  679.     $t[6700000]=457497;
  680.     $t[6710000]=458152;
  681.     $t[6720000]=458786;
  682.     $t[6730000]=459432;
  683.     $t[6740000]=460066;
  684.     $t[6750000]=460707;
  685.     $t[6760000]=461368;
  686.     $t[6770000]=461987;
  687.     $t[6780000]=462619;
  688.     $t[6790000]=463239;
  689.     $t[6800000]=463872;
  690.     $t[6810000]=464504;
  691.     $t[6820000]=465157;
  692.     $t[6830000]=465791;
  693.     $t[6840000]=466422;
  694.     $t[6850000]=467055;
  695.     $t[6860000]=467718;
  696.     $t[6870000]=468378;
  697.     $t[6880000]=469001;
  698.     $t[6890000]=469652;
  699.     $t[6900000]=470283;
  700.     $t[6910000]=470920;
  701.     $t[6920000]=471561;
  702.     $t[6930000]=472176;
  703.     $t[6940000]=472828;
  704.     $t[6950000]=473470;
  705.     $t[6960000]=474101;
  706.     $t[6970000]=474749;
  707.     $t[6980000]=475381;
  708.     $t[6990000]=476011;
  709.     $t[7000000]=476648;
  710.     $t[7010000]=477277;
  711.     $t[7020000]=477907;
  712.     $t[7030000]=478560;
  713.     $t[7040000]=479208;
  714.     $t[7050000]=479864;
  715.     $t[7060000]=480492;
  716.     $t[7070000]=481086;
  717.     $t[7080000]=481746;
  718.     $t[7090000]=482386;
  719.     $t[7100000]=483015;
  720.     $t[7110000]=483678;
  721.     $t[7120000]=484286;
  722.     $t[7130000]=484897;
  723.     $t[7140000]=485514;
  724.     $t[7150000]=486167;
  725.     $t[7160000]=486807;
  726.     $t[7170000]=487436;
  727.     $t[7180000]=488051;
  728.     $t[7190000]=488681;
  729.     $t[7200000]=489319;
  730.     $t[7210000]=489951;
  731.     $t[7220000]=490581;
  732.     $t[7230000]=491216;
  733.     $t[7240000]=491841;
  734.     $t[7250000]=492494;
  735.     $t[7260000]=493109;
  736.     $t[7270000]=493756;
  737.     $t[7280000]=494398;
  738.     $t[7290000]=495034;
  739.     $t[7300000]=495666;
  740.     $t[7310000]=496294;
  741.     $t[7320000]=496924;
  742.     $t[7330000]=497560;
  743.     $t[7340000]=498176;
  744.     $t[7350000]=498797;
  745.     $t[7360000]=499439;
  746.     $t[7370000]=500082;
  747.     $t[7380000]=500717;
  748.     $t[7390000]=501343;
  749.     $t[7400000]=501962;
  750.     $t[7410000]=502582;
  751.     $t[7420000]=503223;
  752.     $t[7430000]=503856;
  753.     $t[7440000]=504491;
  754.     $t[7450000]=505147;
  755.     $t[7460000]=505762;
  756.     $t[7470000]=506372;
  757.     $t[7480000]=507019;
  758.     $t[7490000]=507650;
  759.     $t[7500000]=508261;
  760.     $t[7510000]=508887;
  761.     $t[7520000]=509513;
  762.     $t[7530000]=510126;
  763.     $t[7540000]=510764;
  764.     $t[7550000]=511417;
  765.     $t[7560000]=512062;
  766.     $t[7570000]=512677;
  767.     $t[7580000]=513284;
  768.     $t[7590000]=513921;
  769.     $t[7600000]=514565;
  770.     $t[7610000]=515222;
  771.     $t[7620000]=515838;
  772.     $t[7630000]=516487;
  773.     $t[7640000]=517098;
  774.     $t[7650000]=517740;
  775.     $t[7660000]=518372;
  776.     $t[7670000]=518998;
  777.     $t[7680000]=519628;
  778.     $t[7690000]=520267;
  779.     $t[7700000]=520910;
  780.     $t[7710000]=521522;
  781.     $t[7720000]=522167;
  782.     $t[7730000]=522797;
  783.     $t[7740000]=523403;
  784.     $t[7750000]=524026;
  785.     $t[7760000]=524652;
  786.     $t[7770000]=525264;
  787.     $t[7780000]=525911;
  788.     $t[7790000]=526522;
  789.     $t[7800000]=527154;
  790.     $t[7810000]=527791;
  791.     $t[7820000]=528423;
  792.     $t[7830000]=529046;
  793.     $t[7840000]=529688;
  794.     $t[7850000]=530334;
  795.     $t[7860000]=530964;
  796.     $t[7870000]=531592;
  797.     $t[7880000]=532239;
  798.     $t[7890000]=532880;
  799.     $t[7900000]=533506;
  800.     $t[7910000]=534136;
  801.     $t[7920000]=534752;
  802.     $t[7930000]=535385;
  803.     $t[7940000]=536013;
  804.     $t[7950000]=536652;
  805.     $t[7960000]=537256;
  806.     $t[7970000]=537890;
  807.     $t[7980000]=538528;
  808.     $t[7990000]=539162;
  809.     $t[8000000]=539777;
  810.     $t[8010000]=540414;
  811.     $t[8020000]=541023;
  812.     $t[8030000]=541654;
  813.     $t[8040000]=542259;
  814.     $t[8050000]=542898;
  815.     $t[8060000]=543549;
  816.     $t[8070000]=544176;
  817.     $t[8080000]=544799;
  818.     $t[8090000]=545417;
  819.     $t[8100000]=546024;
  820.     $t[8110000]=546643;
  821.     $t[8120000]=547276;
  822.     $t[8130000]=547927;
  823.     $t[8140000]=548528;
  824.     $t[8150000]=549150;
  825.     $t[8160000]=549798;
  826.     $t[8170000]=550429;
  827.     $t[8180000]=551053;
  828.     $t[8190000]=551701;
  829.     $t[8200000]=552319;
  830.     $t[8210000]=552957;
  831.     $t[8220000]=553587;
  832.     $t[8230000]=554210;
  833.     $t[8240000]=554848;
  834.     $t[8250000]=555479;
  835.     $t[8260000]=556097;
  836.     $t[8270000]=556716;
  837.     $t[8280000]=557344;
  838.     $t[8290000]=557976;
  839.     $t[8300000]=558597;
  840.     $t[8310000]=559228;
  841.     $t[8320000]=559874;
  842.     $t[8330000]=560491;
  843.     $t[8340000]=561109;
  844.     $t[8350000]=561766;
  845.     $t[8360000]=562392;
  846.     $t[8370000]=563000;
  847.     $t[8380000]=563623;
  848.     $t[8390000]=564258;
  849.     $t[8400000]=564877;
  850.     $t[8410000]=565494;
  851.     $t[8420000]=566136;
  852.     $t[8430000]=566746;
  853.     $t[8440000]=567365;
  854.     $t[8450000]=567967;
  855.     $t[8460000]=568606;
  856.     $t[8470000]=569218;
  857.     $t[8480000]=569852;
  858.     $t[8490000]=570491;
  859.     $t[8500000]=571119;
  860.     $t[8510000]=571759;
  861.     $t[8520000]=572390;
  862.     $t[8530000]=573028;
  863.     $t[8540000]=573653;
  864.     $t[8550000]=574274;
  865.     $t[8560000]=574917;
  866.     $t[8570000]=575537;
  867.     $t[8580000]=576191;
  868.     $t[8590000]=576815;
  869.     $t[8600000]=577439;
  870.     $t[8610000]=578081;
  871.     $t[8620000]=578707;
  872.     $t[8630000]=579329;
  873.     $t[8640000]=579964;
  874.     $t[8650000]=580566;
  875.     $t[8660000]=581216;
  876.     $t[8670000]=581845;
  877.     $t[8680000]=582436;
  878.     $t[8690000]=583086;
  879.     $t[8700000]=583714;
  880.     $t[8710000]=584337;
  881.     $t[8720000]=584984;
  882.     $t[8730000]=585613;
  883.     $t[8740000]=586237;
  884.     $t[8750000]=586850;
  885.     $t[8760000]=587486;
  886.     $t[8770000]=588139;
  887.     $t[8780000]=588739;
  888.     $t[8790000]=589397;
  889.     $t[8800000]=590006;
  890.     $t[8810000]=590626;
  891.     $t[8820000]=591236;
  892.     $t[8830000]=591879;
  893.     $t[8840000]=592485;
  894.     $t[8850000]=593112;
  895.     $t[8860000]=593719;
  896.     $t[8870000]=594333;
  897.     $t[8880000]=594973;
  898.     $t[8890000]=595588;
  899.     $t[8900000]=596222;
  900.     $t[8910000]=596829;
  901.     $t[8920000]=597475;
  902.     $t[8930000]=598114;
  903.     $t[8940000]=598741;
  904.     $t[8950000]=599355;
  905.     $t[8960000]=599970;
  906.     $t[8970000]=600583;
  907.     $t[8980000]=601203;
  908.     $t[8990000]=601855;
  909.     $t[9000000]=602489;
  910.     $t[9010000]=603072;
  911.     $t[9020000]=603688;
  912.     $t[9030000]=604301;
  913.     $t[9040000]=604919;
  914.     $t[9050000]=605556;
  915.     $t[9060000]=606160;
  916.     $t[9070000]=606790;
  917.     $t[9080000]=607402;
  918.     $t[9090000]=608058;
  919.     $t[9100000]=608672;
  920.     $t[9110000]=609299;
  921.     $t[9120000]=609906;
  922.     $t[9130000]=610515;
  923.     $t[9140000]=611160;
  924.     $t[9150000]=611788;
  925.     $t[9160000]=612395;
  926.     $t[9170000]=613025;
  927.     $t[9180000]=613663;
  928.     $t[9190000]=614290;
  929.     $t[9200000]=614917;
  930.     $t[9210000]=615525;
  931.     $t[9220000]=616162;
  932.     $t[9230000]=616807;
  933.     $t[9240000]=617434;
  934.     $t[9250000]=618057;
  935.     $t[9260000]=618692;
  936.     $t[9270000]=619303;
  937.     $t[9280000]=619929;
  938.     $t[9290000]=620542;
  939.     $t[9300000]=621177;
  940.     $t[9310000]=621798;
  941.     $t[9320000]=622416;
  942.     $t[9330000]=623036;
  943.     $t[9340000]=623664;
  944.     $t[9350000]=624298;
  945.     $t[9360000]=624926;
  946.     $t[9370000]=625553;
  947.     $t[9380000]=626159;
  948.     $t[9390000]=626788;
  949.     $t[9400000]=627400;
  950.     $t[9410000]=628010;
  951.     $t[9420000]=628643;
  952.     $t[9430000]=629249;
  953.     $t[9440000]=629858;
  954.     $t[9450000]=630495;
  955.     $t[9460000]=631091;
  956.     $t[9470000]=631722;
  957.     $t[9480000]=632341;
  958.     $t[9490000]=632966;
  959.     $t[9500000]=633578;
  960.     $t[9510000]=634216;
  961.     $t[9520000]=634827;
  962.     $t[9530000]=635441;
  963.     $t[9540000]=636072;
  964.     $t[9550000]=636697;
  965.     $t[9560000]=637333;
  966.     $t[9570000]=637939;
  967.     $t[9580000]=638572;
  968.     $t[9590000]=639231;
  969.     $t[9600000]=639851;
  970.     $t[9610000]=640461;
  971.     $t[9620000]=641085;
  972.     $t[9630000]=641712;
  973.     $t[9640000]=642321;
  974.     $t[9650000]=642962;
  975.     $t[9660000]=643576;
  976.     $t[9670000]=644218;
  977.     $t[9680000]=644835;
  978.     $t[9690000]=645451;
  979.     $t[9700000]=646054;
  980.     $t[9710000]=646676;
  981.     $t[9720000]=647275;
  982.     $t[9730000]=647920;
  983.     $t[9740000]=648548;
  984.     $t[9750000]=649175;
  985.     $t[9760000]=649793;
  986.     $t[9770000]=650392;
  987.     $t[9780000]=651005;
  988.     $t[9790000]=651624;
  989.     $t[9800000]=652265;
  990.     $t[9810000]=652890;
  991.     $t[9820000]=653519;
  992.     $t[9830000]=654142;
  993.     $t[9840000]=654751;
  994.     $t[9850000]=655355;
  995.     $t[9860000]=655972;
  996.     $t[9870000]=656592;
  997.     $t[9880000]=657202;
  998.     $t[9890000]=657821;
  999.     $t[9900000]=658445;
  1000.     $t[9910000]=659055;
  1001.     $t[9920000]=659669;
  1002.     $t[9930000]=660285;
  1003.     $t[9940000]=660916;
  1004.     $t[9950000]=661520;
  1005.     $t[9960000]=662138;
  1006.     $t[9970000]=662760;
  1007.     $t[9980000]=663368;
  1008.     $t[9990000]=663965;
  1009.     $t[10000000]=664579;
  1010.    
  1011.    
  1012.    
  1013.    
  1014.     $n = $argv[1];
  1015.    
  1016.     if ( isset($t[$n]) ){
  1017.         exit("".$t[$n].PHP_EOL);
  1018.     }
  1019.    
  1020.     $n2=9990000;
  1021.     while ( $n2 > $n ){$n2-=10000;}
  1022.     $answer1 = $t[$n2];
  1023.     $sqrtN = ($n<0)? 0:(int)sqrt($n);
  1024.     $nonPrime = array();
  1025.     $i=1;
  1026.     $prime = $primeNums[$i];
  1027.     while( $prime <= $sqrtN)
  1028.     {
  1029.         $j = $prime*((int)($n2/$prime));
  1030.         if ( $j == 0 ){ // if $n is under 10000 -> $n2 = 0
  1031.             $j=$prime*$prime;
  1032.         }else{
  1033.             $j+= $prime;
  1034.             if ( $j%2 == 0 ){
  1035.                 $j+= $prime;
  1036.             }
  1037.         }
  1038.         // mark all the non-primes
  1039.         while( $j <= $n){
  1040.             $nonPrime[$j] = 0;
  1041.             $j += 2*$prime;
  1042.         }
  1043.         $i++;
  1044.         $prime = $primeNums[$i];
  1045.     }
  1046.     $n3 = $n - $n2;
  1047.     if ( $n3%2 == 0){
  1048.         $answer2 = $n3 - $n3/2 - count($nonPrime);
  1049.     }else{
  1050.         $answer2 = $n3 - ($n3-1)/2 - count($nonPrime);
  1051.     }
  1052.     $answer = $answer1 + $answer2;
  1053.     if( $n < 2 ) $answer=0;
  1054.    
  1055.    
  1056.    
  1057.     // DO NOT CHANGE BELOW THIS LINE
  1058.     echo $answer.PHP_EOL;
Advertisement
Add Comment
Please, Sign In to add comment