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

holmescn

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

[½»Á÷] Euler ¹¤³Ì µÚØ¥ÈýÌ⣺ ÒÑÓÐ5È˲ÎÓë

ÍêÃÀÊýÊÇÖ¸Ò»¸öÊýµÄËùÓÐÒò×ӵĺͻ¹ÊÇÕâ¸öÊý¡£±ÈÈç28£½1+2+4+7+14.
Èç¹ûËùÓÐÒò×ӵĺÍСÓÚÕâ¸öÊý£¬¾Í³ÆËüΪ¡°Æ¶Êý¡±¡£·´Ö®£¬Èç¹ûËùÓÐÒò×ӵĺʹóÓÚÕâ¸öÊý£¬Ôò³ÆÖ®Îª¡°¸»Êý¡±¡£

±ÈÈç12ÊÇ×îСµÄ¡°¸»Êý¡±£¬ÒòΪ 1+2+3+4+6=16>12. ×îСµÄ¿ÉÒÔдΪÁ½¸ö¡°¸»Êý¡±µÄºÍµÄÊýÊÇ24. ÓÉÊýѧ·ÖÎö¿ÉÖª£¬ÈκδóÓÚ28123µÄÕûÊý¶¼¿ÉÒÔд³ÉÒ»¸öÁ½¸ö¡°¸»Êý¡±µÄºÍ¡£µ«ÊÇ£¬Õâ¸öÉÏÏÞ²»ÄܼÌÐøËõСÁË£¬ÏÔÈ»ÒѾ­ÖªµÀ×î´óµÄ²»ÄÜд³ÉÁ½¸ö¡°¸»Êý¡±µÄºÍµÄÊýÒª±ÈÕâ¸öÊýС¡£

ÄÇô£¬ËùÓв»ÄÜд³ÉÁ½¸ö¡°¸»Êý¡±µÄºÍµÄÕýÕûÊýµÄºÍÊǶàÉÙÄØ£¿

[ Last edited by holmescn on 2011-6-5 at 23:34 ]
»Ø¸´´ËÂ¥
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

libralibra

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

æôÆï½«¾ü

¡ï ¡ï ¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû
jjdg(½ð±Ò+2): ÐÁ¿àÁË 2011-06-06 03:24:33
jjdg(½ð±Ò+1): ¶ËÎç½Ú¿ìÀÖ 2011-06-06 03:24:40
΢³¾¡¢ÃÎÏë(³ÌÐòÇ¿Ìû+1): ¹ÄÀø¶à½»Á÷£¡ 2011-06-06 20:16:48
ÄãÄǸö¸»ÊýÁбíÉú³ÉÅжÏÓÐÎÊÌâ,²»ÄÜÅжϵ½sqrt(n),±ØÐë´Ó1-n-1
ÀýÈçint(sqrt(12))==3,µ«ÊÇ4Ò²Õû³ý12;int(sqrt(28))==5,µ«ÊÇ14Ò²Õû³ý28

Õâ¸öÓÃmatlabËÙ¶ÈÌ«ÂýÁË,¸ÄcÁË
CODE:
#include
#include

// compute the sum of all factors
int d(int n)
{
        int s=0;
        int i;
        for(i=2;i                 if(n%i==0)
                        s += i;
       
        return s+1; // ¼ÓÉÏ1
}

// euler23
int main(int args, char* argv[])
{
        int i, j, sum = 0;
        bool flag = false;
        for(i=1;i<28123;i++)
        {
                flag = false;
                for(j=1;j                 {
                        if(j<(i-j)) // j+(i-j)==i,Ö»ÅжÏÒ»´Î
            {
                if(d(j)>j && d(i-j)>(i-j)) // Èç¹ûjºÍi-j¶¼ÊÇabundant number,¸Ä±äflag½áÊø±¾´ÎÑ­»·
                {
                    flag = true;
                    break;
                }
            }               
                }

                if(!flag) // ²»ÄܱíʾΪ2¸öabundant numberÖ®ºÍ
                {
                        sum += i;
                        printf("%d added.\n",i); // ÒÔΪËÀ»úÁË,¼ÓÕâ¾ä¿´Êä³öµÄ
                }
        }
       
        printf("\nResult: %d\n",sum); // ´òÓ¡½á¹û

        system("PAUSE");
        return 0;
}

½á¹û
CODE:
4179871

[ Last edited by libralibra on 2011-6-6 at 01:47 ]
matlab/VB/python/c++/Javaд³ÌÐòÇë·¢QQÓʼþ:790404545@qq.com
3Â¥2011-06-06 01:43:30
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
²é¿´È«²¿ 17 ¸ö»Ø´ð

holmescn

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

¡ï
dubo(½ð±Ò+1): ¶àл½»Á÷ 2011-06-06 14:41:22
΢³¾¡¢ÃÎÏë(³ÌÐòÇ¿Ìû+1): ¹ÄÀø¶à½»Á÷£¡ 2011-06-06 20:16:22
Ð޸İæ1
CODE:
# -*- coding: utf-8 -*-

from math import sqrt
from timeit import timeit

def abundantGen():
    "Éú³ÉÒ»¸ö¸»ÊýÁбí"
    abundant = []
    n = 12

    while n < 28123:
        factors = [1]
        sqrtn = int(sqrt(n))
        for i in range(2,sqrtn+1):
            if n % i == 0:
                factors.append(i)
                if n / i != i:
                    factors.append(n/i)

        if sqrtn*sqrtn == n:
            factors.remove(sqrtn)

        if sum(factors) > n:
            abundant.append(n)
        n += 1

    return abundant

def euler23():
    # Ò»¸ö¡°¸»Êý¡±Áбí
    abundant = abundantGen()
    n = 1
    s = 0

    while n < 28123:
        flag = False
        for i in abundant:
            if i > n: break
            try:
                # Èç¹ûn-iÔÚÁбíÄÚ£¬ÄÇôn¾Í¿ÉÒÔ·Ö³ÉÁ½¸ö
                # ¡°¸»Êý¡±µÄºÍ
                abundant.index(n-i)
                flag = True
                break
            except:
                continue

        if flag == 0:
            s += n

        n += 1

    print s

if __name__ == "__main__":
    print timeit("euler23.euler23()", "import euler23", number=3)

ÐÞ¸ÄÒԺ󣬽á¹ûºÃÏñÕý³£ÁË£¬µ«Ê±¼äÌ«³¤ÁË¡£
ÒýÓûØÌû:
result = 4179871
takes 1098.32 s

[ Last edited by holmescn on 2011-6-6 at 11:11 ]
2Â¥2011-06-05 23:40:25
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

holmescn

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

¡ï
dubo(½ð±Ò+1): ¶àл½»Á÷ 2011-06-06 14:44:16
ÒýÓûØÌû:
Originally posted by libralibra at 2011-06-06 01:43:30:
ÄãÄǸö¸»ÊýÁбíÉú³ÉÅжÏÓÐÎÊÌâ,²»ÄÜÅжϵ½sqrt(n),±ØÐë´Ó1-n-1
ÀýÈçint(sqrt(12))==3,µ«ÊÇ4Ò²Õû³ý12;int(sqrt(28))==5,µ«ÊÇ14Ò²Õû³ý28

Õâ¸öÓÃmatlabËÙ¶ÈÌ«ÂýÁË,¸ÄcÁË
[code] #include <stdio.h>
#inc ...

ÎÒÖªµÀÄãµÄÒâ˼°¡£¬µ«ÎÒÓÐÁ½¸öappendµÄ°¡¡£Ò²¾ÍÊÇ˵

sqrt(12)=3

i È¡ÁË 1 2 3
ͬʱ
n/i È¡ÁË 12 6 4

ÔΣ¬ÎÒ˵ÎҵĺÍÕâÃ´Ð¡ÄØ, Ô­À´ÎÒÈ¡ÁË12ÁË
4Â¥2011-06-06 08:43:16
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

huycwork

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

¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû
dubo(½ð±Ò+1): ¶àл½»Á÷ 2011-06-06 14:43:01
ÓàÔó³É(³ÌÐòÇ¿Ìû+1): ¹ÄÀø½»Á÷£¡ 2011-06-18 15:56:47
C++´úÂ룺
CODE:
#include
enum {BUFSZ = 28124};
size_t buf[BUFSZ];   //´æ·ÅËùÓÐÔ¼ÊýºÍ
size_t buf2[BUFSZ];  //´æ·Å¸»ÊýÖµ

size_t eular23(){
        for(size_t i = 1; i < BUFSZ; ++i){
                for(size_t j = i+i; j < BUFSZ; j+=i){
                        buf[j] += i;
                }
        }//Éú³ÉËùÓÐÊýµÄÔ¼ÊýºÍ£¬ÕâÀïµÄ¸´ÔÓ¶ÈСÓÚO(n*n)£¬µÚ¶þ²½µÄ²½ÊýҪСÓÚµ÷ºÍ¼¶ÊýµÄÄǸöºÍ
        size_t *p = buf2;
        for(size_t i = 12; i < BUFSZ; ++i){
                if(buf[i] > i)
                        *p++ = i;
        }//ÌáÈ¡¸»Êý£¬¸´ÔÓ¶ÈÊÇO(n)
        size_t s = 0;
        int t;
        size_t *pt;
        //ÕâÀ︴ÔÓ¶Èͦ¸ß£¬ÉÏÏÞÊÇO(n*n)£¬¾ßÌåÒ²²»Çå³þɶ¸öÆÆ¶«Î÷
        for(size_t i = 1; i < BUFSZ; ++i){
                pt = buf2;
                while(pt < p){
                        t = i;
                        t -= *pt++;
                        if(t <= 0){
                                s += i;
                                break;
                        }
                        if(buf[t] <= t){
                                if(pt == p)
                                        s += i;
                                continue;
                        }
                        break;
                }
        }
        return s;
}
int main(){
        std::cout< }

ʱ¼ä¸´ÔÓ¶ÈÊDz»´í£¬¾ÍÊÇÓеãÀ˷ѿռ䣬ÉݳÞÁË¡£¸»ÊýµÄ¸öÊýÊǸöʲô¹æÂÉÒ²²»Çå³þ£¬Çå³þµÄ»°¾Í¿ÉÒÔ½ÚÊ¡¿Õ¼äÁË¡£

[ Last edited by huycwork on 2011-6-6 at 22:48 ]
äöÎеÄÖÐÐÄÓÐÒ»¿é¿ÕµØ£¬¿Õ¿ÕµÄ¡£
5Â¥2011-06-06 09:38:44
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[»ù½ðÉêÇë] ÎÒÃæÉÏÍêµ°ÁË +10 ÇÒÌý»¢Ð¥ 2026-08-20 11/550 2026-08-25 07:12 by echo8914667
[¿¼²©] ÊÛSCIÒ»ÇøÎÄÕ£¬ÎÒ:8.O.55.1.O.54,¿ÆÄ¿ÆëÈ«,¿ÉÙ¤¼± +3 0XLacIJUOj8D 2026-08-24 3/150 2026-08-25 01:47 by BZKMTicpDhFj
[»ù½ðÉêÇë] Ã÷ÌìÓ¦¸Ã¿É²éÁË£¡£¿ +5 chengyan1220 2026-08-23 5/250 2026-08-24 23:28 by ÎÒ4´ó°×²Ë
[»ù½ðÉêÇë] Èç¹û´Ë¿ÌÄãÕýÔÚΪ¹ú»ù¸Ðµ½½¹ÂÇ£¬²»·ÁÀ´ÌýÌýÕâÊס¶»ù½ðÖ®Íâ¡· +7 scalable 2026-08-24 7/350 2026-08-24 23:01 by anata1209
[»ù½ðÉêÇë] ûÓÐÈκÎÏûÏ¢-ÊDz»ÊǾÍÁ¹ÁË +7 ͼÀ²Í¼À² 2026-08-24 8/400 2026-08-24 22:00 by maomao_da
[»ù½ðÉêÇë] ÈËÆø²»ÐÐÁË +10 fansofjerry 2026-08-21 10/500 2026-08-24 21:03 by zhanghaozhu
[»ù½ðÉêÇë] filecode£¬4¸öjtjcÁË +14 ziyangfang 2026-08-19 17/850 2026-08-24 18:37 by ¹þ¹þ¸ò£¿
[»ù½ðÉêÇë] ½ñÈÕ²»·Å°ñ£¿Íø´«¹ú×ÔȻԤ¼Æ 8 Ô 27 Èտɲé½á¹û +17 ҽѧÀÏÄк¢ 2026-08-20 21/1050 2026-08-24 14:21 by refreshing11
[»ù½ðÉêÇë] ¹À¼ÆÊÇÖÜËÄ +4 archvillain 2026-08-18 4/200 2026-08-24 13:53 by zzuzxg
[»ù½ðÉêÇë] ·¶½øÖоÙÒ»ÎĵÄÖÐÐÄ˼Ïë +6 Ñ׻ƹóëÐ 2026-08-22 7/350 2026-08-24 11:58 by 6543yes
[»ù½ðÉêÇë] ¿ÆÑй¶ùÌ«ÄÑÁË +18 ÎÒ4´ó°×²Ë 2026-08-20 19/950 2026-08-24 09:47 by ¿­¶÷¹ãÊ¢´ß»¯·ÖÎ
[»ù½ðÉêÇë] 2026ÄêµÄ¹ú¼ÒÉç¿Æ»ù½ðÏîĿͨѶÆÀÉóµÄйæÔòÓëж¯Ïò¡¢ÐÂÌôÕ½ +4 process2012 2026-08-23 5/250 2026-08-23 19:58 by jurkat.1640
[½Ìʦ֮¼Ò] Ìø²ÛºóÔÚÑÐÏîÄ¿Ôõô°ì£¿ +5 ¼òµ¥»¯xn 2026-08-22 10/500 2026-08-23 12:38 by ¼òµ¥»¯xn
[»ù½ðÉêÇë] ½ñÌì·Å°ñÂ𣿠+15 ²¼²¼ºÍÒ»¶þ 2026-08-19 16/800 2026-08-23 09:55 by ÕÅ´ºÉú
[»ù½ðÉêÇë] Ö»ÓÐÿÄêÕâÖÖʱºòÀ´¹ä¹äСľ³æ +24 yaoyewhu2008 2026-08-20 26/1300 2026-08-22 17:43 by kammury
[»ù½ðÉêÇë] ʱ¼ä´Á½ñÌ죬20ºÅ±äÁË +5 archvillain 2026-08-20 5/250 2026-08-22 06:12 by hui_daxiao
[»ù½ðÉêÇë] ¿´À´½ñÌì²»»á·Å°ñÁË£¿ +8 chengyan1220 2026-08-21 11/550 2026-08-21 17:52 by dcqxinyang
[»ù½ðÉêÇë] »ù½ð°¡»ù½ð +4 longfie172 2026-08-20 4/200 2026-08-21 08:58 by mark mao
[»ù½ðÉêÇë] ÖØÒªÏûÏ¢£¬ÖÐÎçϵͳÔÚά»¤ +11 yuleib84 2026-08-18 12/600 2026-08-20 11:09 by xskun
[»ù½ðÉêÇë] ½ñÌìά»¤ÏµÍ³Î¬»¤ ×£ËùÓÐÈË ¸ßÖÐ +8 gjjjzhong 2026-08-18 9/450 2026-08-18 13:01 by ¼ÒÓëÔ¶·½
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û