Znn3bq.jpeg
²é¿´: 1689  |  »Ø¸´: 6
±¾Ìû²úÉú 3 ¸ö ³ÌÐòÇ¿Ìû £¬µã»÷ÕâÀï½øÐв鿴
µ±Ç°Ö»ÏÔʾÂú×ãÖ¸¶¨Ìõ¼þµÄ»ØÌû£¬µã»÷ÕâÀï²é¿´±¾»°ÌâµÄËùÓлØÌû

holmescn

½ð³æ (ÕýʽдÊÖ)

[½»Á÷] Euler ¹¤³Ì µÚÊ®Ì⣺¼ÆËãСÓÚ2°ÙÍòµÄËùÓÐÖÊÊýµÄºÍ ÒÑÓÐ3È˲ÎÓë

The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.

Find the sum of all the primes below two million.

СÓÚ10µÄËùÓÐÖÊÊýµÄºÍΪ£º2+3+5+7 = 17

ÄÇôСÓÚ2°ÙÍòµÄËùÓÐÖÊÊýµÄºÍÊǶàÉÙ£¿


PS£º×î½üµÄ¹ØÓÚÖÊÊýµÄÎÊÌâ»¹ÕæÊǶడ£¬¹þ¹þ¡£
PS2£ºµ½µÚ10ÌâÁË£¬Õâ¸öÌâµÄ½â³öÂÊÒѾ­ÊǵÚÒ»ÌâµÄÒ»°ë»¹²»µ½ÁË¡£
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

» ±¾Ö÷ÌâÏà¹Ø¼ÛÖµÌùÍÆ¼ö£¬¶ÔÄúͬÑùÓаïÖú:

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

holmescn

½ð³æ (ÕýʽдÊÖ)

¡ï ¡ï
ÓàÔó³É(½ð±Ò+2, ³ÌÐòÇ¿Ìû+1): лл²ÎÓë½»Á÷£¡ 2011-05-18 17:05:42
¿´ÁËhuycworkµÄ´úÂ룬¸Ð¾õ²»Ì«ºÃ£¬ÓÃÁËgotoµÄ»°£¬¾Íbad smellÁË¡£ÎÒдÁËÒ»¸öûÓÐgotoµÄ°æ±¾²»¹ý£¬¿ÉÄÜÓеط½»áÖØµþ£¬Ôì³ÉËÙ¶ÈÂý¡£
CODE:
#include
#include
#include

#define PRIMESZ 100002
#define BUFSZ 10000

int nthPrime(int nth) {
    // ×ܹ²µÄÖÊÊý¼¯
    int primes[PRIMESZ];
    // ÿ´Î¹ýÂËÓõÄbuffer
    int buf[BUFSZ];
    // ÒÑÖªµÄÖÊÊý¸öÊý
    int amountOfPrimes;
    // ¼Ç¼bufferµÄµÚÒ»¸öÊý
    // ×îºóÒ»¸öÊýÒÔ¼°ÏÂÒ»¸ö
    // Êǵ±Ç°ÖÊÊýµÄ±¶ÊýµÄÊý
    int next, first, last;
    int i, j;

    // ÏȸøÁ½¸öÖÊÊý
    primes[0] = 2;
    primes[1] = 3;
    amountOfPrimes = 2;
    last = 3;

    while (amountOfPrimes < nth) {
        // Ìî³äbuffer, ²»ÒªÅ¼Êý
        // ÕâÀï´Ó×î´óÖÊÊý¿ªÊ¼£¬Ñ¡BUFSZ¸öÊý
        // ¿ÉÄÜÓÐЩÊý»á±»Öظ´²éÕÒ
        // µ«¿ÉÒÔ·Àֹ©µôÊý
        for(i = 0; i < BUFSZ; i++) {
            buf[i] = primes[amountOfPrimes - 1] + i*2;
        }

        // ±£´æµÚÒ»¸öÊýºÍ×îºóÒ»¸öÊý£¬ÒòΪ¿ÉÄܱ»ÐÞ¸Ä
        first = buf[0];
        last  = buf[BUFSZ-1];

        for(i = 1; i < amountOfPrimes; i++) {
            // ÏÂÒ»¸ö´óÓÚfirstµ«ÊÇprimes[i]µÄ±¶ÊýµÄÊý
            next = ceil(first * 1.0 / primes[i]);
            // ·ÀÖ¹µÃµ½Å¼Êý
            if (next % 2 == 0) next += 1;

            // ¹ýÂ˵ôprimes[i]µÄ±¶Êý
            // ÕâÀïÎÒÏëÁ˺ܾÃ......
            // Ö÷ÒªÊÇÄÔ×Ó²»¹»ÓÃ
            for(j = next * primes[i]; j <= last; j += primes[i]*2) {
                buf[(j - first)/2] = 0;
            }
        }

        // °Ñ¹ýÂËÍêÁ˵ÄÖÊÊý¼Óµ½primesÀï
        // ²»ÄܼӵÃÌ«¶à£¬ÒòΪ¿ÉÄÜÓÐЩÖÊÊý»¹Ã»ÓÐÔÚprimesÀï
        // ÕâЩÖÊÊýµÄ±¶Êý¿ÉÄܻᱻ¼Ó½øÀ´
        for(j = 0; j < (BUFSZ < amountOfPrimes?BUFSZ:amountOfPrimes); j++) {
            if(buf[j]) {
                primes[amountOfPrimes++] = buf[j];
            }
            // ¹»ÊýÁ˾ͱðÔÙ¼ÓÁË
            if(amountOfPrimes > PRIMESZ)
                break;
        }
    }

    return primes[nth-1];
}

int main(int argc, char** argv){
    time_t t;
    t = time(0);
    printf("nthPrimes = %d\n", nthPrime(100001));
    printf("%d\n", time(0)-t);
    return 0;
}

5Â¥2011-05-18 14:35:44
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
²é¿´È«²¿ 7 ¸ö»Ø´ð

huycwork

½ð³æ (ÖøÃûдÊÖ)

¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû
ÓàÔó³É(½ð±Ò+1): лл²ÎÓëÌÖÂÛ£¡ 2011-05-15 19:21:06
Ö»ÊÇÕâЩÖÊÊýÎÊÌ⣬²àÖØµã¸÷Óв»Í¬£¬µÚÈýÌâÒªÇóÕÒ³ö×î´óÖÊÊý£¬µÚÆßÌâÒªÇó½â³öµÚ10001¸öÖÊÊý£¬¶øÕâÒ»Ìâ¸ù±¾²»ÒªÇó²âÊÔ³öËùÓÐÖÊÊý£¬Ö»ÊÇÇóºÍ¶øÒÑ£¬½â·¨Ó¦¸ÃÒ²ÓÐÌØÊâÖ®´¦¡£
äöÎеÄÖÐÐÄÓÐÒ»¿é¿ÕµØ£¬¿Õ¿ÕµÄ¡£
2Â¥2011-05-15 08:44:32
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

libralibra

ÖÁ×ðľ³æ (ÖøÃûдÊÖ)

æôÆï½«¾ü

¡ï ¡ï ¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû
ÓàÔó³É(½ð±Ò+3): лл²ÎÓë½»Á÷£¡ 2011-05-15 19:21:33
»¹ÊÇÀÏ¹æ¾Ø,ÏÈÀ´¸ö͵ÀÁµÄ½â·¨
CODE:
function result = euler10()
tic;
result = sum(primes(2000000));
toc;
end

½á¹û+ÔËÐÐʱ¼ä
CODE:
% Elapsed time is 0.087248 seconds.
% ans =
%               142913828922

matlab/VB/python/c++/Javaд³ÌÐòÇë·¢QQÓʼþ:790404545@qq.com
3Â¥2011-05-15 14:56:17
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

huycwork

½ð³æ (ÖøÃûдÊÖ)

¡ï ¡ï ¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû
ÓàÔó³É(½ð±Ò+3, ³ÌÐòÇ¿Ìû+1): лл²ÎÓë½»Á÷£¡ 2011-05-15 19:21:47
ÎÒÏÈǰ˵µÄËØÊýËã·¨µÄʵÏÖ£¬Å¼Êý²¿·ÖûÓÐÓÅ»¯£¬Ð§ÂÊ¿´ÆðÀ´»¹Ëã²»´í~µÚÆßÌⶼûÈ˹ÜÁË£¬¾Í·¢Õâ°É£º
CODE:
#include
#include

using namespace std;

enum {
        BUFSZ = 10000,//Õâ¸öÏÞÖÆ²úÉúÐÔÄÜÆ¿¾±£¬ÉèÖÃÔ½´ó£¬ÐÔÄܾÍÔ½ºÃ
        NPRI = 10001    //Õâ¸öÊý¾Ý¾ÍÐèÒª¹À¼ÆÁË£¬²»Ïë¹À¼Æ£¬¾ÍÖ±½Óvector°É:)
};

bool buf[BUFSZ];
size_t primer[NPRI];

size_t eular7(size_t nprimer = 10001){
        size_t offset = 0, *prip, *cprip;
        int top;//¼ÇÂ¼ËØÊýÊý
        int falc;//ÅųýµÄÊý
        bool *bufp;
        primer[0] = 2;//¸ºÔðżÊý²¿·Ö
        primer[1] = 3;
        primer[2] = 5;
        top = 3;
        //Èç¹û´Ó1¿ªÊ¼»á°ÑËùÓеÄÊý¶¼falseÁË£¬offset±ØÐë±È1Òª´ó
        offset += 5;
        while(1){
                for(size_t i = 0; i < BUFSZ; ++i)
                        buf[i] = true;
                falc = 0;
                prip = primer;
                cprip = primer + top;
                bufp = buf;
NEWPRI:   //ÿµ±ÓÐеÄËØÊý¾ÍÌø»ØÀ´
                //¼ì²éÿ¸öÒÑÖªµÄËØÊý£¬Õⲿ·Ö¿ÉÄÜÓÐbug£¬²âÊÔµÄʱºò¸Ð¾õÓеãÎÊÌâ
                while(prip - primer < top){
                        size_t mod = offset%(*prip);
                        if(mod == 0){
                                buf[0] = false;
                                ++falc;
                        }
                        for(size_t i = *prip - mod; i < BUFSZ; i+=*prip){
                                if(buf[i])
                                        ++falc;
                                buf[i] = false;
                        }
                        ++prip;//Õâ¸öÖ¸Õë±£Ö¤£¬²»»áÖØ¸´±éÀúËØÊý±í
                }
                //Ìí¼Óδ֪µÄËØÊý£¬Ã¿´ÎÖ»Ìí¼ÓÒ»¸ö
                for(int i = bufp - buf; i < BUFSZ; ++i){
                        if(buf[i]){
                                primer[top++] = offset + i;
                                if(top == nprimer)
                                        goto DONE;
                                bufp = buf+i;//Õâ¸öÖ¸Õë±£Ö¤£¬²»»áÖØ¸´¼ì²é»º³åÊý±í
                                if(falc + prip - cprip < BUFSZ)
                                        goto NEWPRI;
                        }
                }
                offset += BUFSZ;
        }
DONE:
        return primer[nprimer-1];
}

int main(){
        time_t t1, t2;
        t1 = time(0);
        size_t res = eular7();
        t2 = time(0);
        cout<<"result:"<         cout<<"cost:"<         return 0;
}

Èç¹ûÒªÊÊÓ¦ÕâÌ⣬ÐÞ¸ÄÖÕÖ¹Ìõ¼þ¼´¿É¡£
äöÎеÄÖÐÐÄÓÐÒ»¿é¿ÕµØ£¬¿Õ¿ÕµÄ¡£
4Â¥2011-05-15 15:45:50
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 295·ÖÇóµ÷¼Á +4 ?ÒªÉϰ¶? 2026-04-17 4/200 2026-04-17 16:46 by wutongshun
[¿¼ÑÐ] 322Çóµ÷¼Á +6 tekuzu 2026-04-17 6/300 2026-04-17 13:48 by Espannnnnol
[Óлú½»Á÷] ¶þ±½¼×ͪËáÀàÑÜÉúÎï 50+3 С°×°®Ö÷ÈË 2026-04-17 4/200 2026-04-17 11:18 by czyzsu
[¿¼ÑÐ] 279Çóµ÷¼Á +13 ÕÅ·¬ÇѲ»³´µ° 2026-04-11 13/650 2026-04-17 10:38 by cuisz
[¿¼ÑÐ] 291Çóµ÷¼Á +9 ¹ØÒä±±. 2026-04-14 9/450 2026-04-16 22:49 by cfdbai
[¿¼ÑÐ] 22408 312Çóµ÷¼Á +23 ÃÅ·ÃþÃþ 2026-04-14 25/1250 2026-04-16 21:21 by Art1977
[»ù½ðÉêÇë] RY£ºÖйú²ú³öµÄ¿ÆÑ§À¬»øÂÛÎÄ£¬¾ø¶ÔÊýÁ¿ºÍ±ÈÀý¶¼ÊÀ½çµÚÒ» +7 zju2000 2026-04-14 18/900 2026-04-16 11:36 by »¶ÀÖËÌÒ¶Ýè
[¿¼ÑÐ] ҩѧÇóµ÷¼Á +14 à¶¹þ¼ÓÓÍ 2026-04-14 16/800 2026-04-16 10:15 by beilsong20
[¿¼ÑÐ] Ò»Ö¾Ô¸AÇø211£¬22408 321Çóµ÷¼Á +6 ËæÐÄËùÓû¡î 2026-04-15 7/350 2026-04-15 21:45 by lbsjt
[¿¼ÑÐ] ÇóÖúµ÷¼Á£¬¿çµ÷ +19 XÊ®¸¦´çY 2026-04-11 20/1000 2026-04-15 21:18 by cuisz
[¿¼ÑÐ] 0854µ÷¼Á +13 ³¤¹­°Á 2026-04-12 16/800 2026-04-15 13:45 by fenglj492
[¿¼ÑÐ] 310Çóµ÷¼Á +16 666ÕæºÃ 2026-04-11 18/900 2026-04-15 13:28 by ºÚ¿Æ¼¼¿óÒµ
[¿¼ÑÐ] 366Çóµ÷¼Á +11 ²»ÖªÃûµÄСئ 2026-04-11 11/550 2026-04-14 15:50 by zs92450
[¿¼ÑÐ] 271Çóµ÷¼Á +35 2261744733 2026-04-11 41/2050 2026-04-14 15:36 by zs92450
[½Ìʦ֮¼Ò] ת³¤Æ¸ÁË +7 ¼òµ¥»¯xn 2026-04-13 7/350 2026-04-14 14:50 by xindong
[¿¼ÑÐ] 245Çóµ÷¼Á +6 ±ùÌÇéÙ?ÆûË® 2026-04-13 10/500 2026-04-14 10:49 by jyl0317
[¿¼ÑÐ] 293Çóµ÷¼Á +16 ÎÒ°®¸ßÊý¸ßÊý°®Î 2026-04-12 18/900 2026-04-13 21:47 by ѧԱJpLReM
[¿¼ÑÐ] 344 ²ÄÁÏרҵ Çóµ÷¼Á211 ÎÞµØÓòÒªÇó +8 hualkop 2026-04-11 8/400 2026-04-12 22:24 by fqwang
[¿¼ÑÐ] 303Çóµ÷¼Á +14 SereinQ 2026-04-10 15/750 2026-04-11 20:43 by À¶ÔÆË¼Óê
[¿¼ÑÐ] 085600²ÄÁÏÓ뻯¹¤329·ÖÇóµ÷¼Á +16 Ò¶zilin 2026-04-10 16/800 2026-04-11 11:04 by may_ÐÂÓî
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û