²é¿´: 2464  |  »Ø¸´: 9
±¾Ìû²úÉú 4 ¸ö ³ÌÐòÇ¿Ìû £¬µã»÷ÕâÀï½øÐв鿴

holmescn

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

[½»Á÷] Euler ¹¤³Ì µÚ14Ì⣺ÕÒ×µÄÊýÁÐ ÒÑÓÐ6È˲ÎÓë

ÖÜÄ©ÁË£¬·Å¸öÌâ³öÀ´ÍæÍ棺

¶¨ÒåÒ»¸öÕýÕûÊýÊýÁУ¬Æäµü´ú¹«Ê½Îª£º
n = n/2 (µ±nΪżÊý)
n = 3n+1 (µ±nÎªÆæÊý)

±ÈÈç´Ón=13¿ªÊ¼£¬¼ÆËãÕâ¸öÊýÁеãº
13 ->40->20->10->5->16->8->4->1
Õâ¸öÊýÁÐÒ»¹²ÓÐ10Ïî¡£
Õâ¸öÊýÁÐÊDz»ÊÇ×ÜÊÕÁ²µ½1»¹ÊǸöûÓнâ¾öµÄÎÊÌ⣨³ÆÎªCollatz Problem)
²»¹ý£¬ÎÒÃDz¢²»ÊÇÒª½âÕâ¸öÄÑÌ⣬¶øÊÇÒªÇóÔÚСÓÚ1°ÙÍòµÄËùÓÐÆðʼÊýÖУ¬ÄĸöÊýÄܲúÉú×µÄÊýÁС£

ÕâÀïҪעÒâµÄÊÇ£¬ÊýÁÐÖмäµÄÏîÊÇ¿ÉÒÔ´óÓÚ1°ÙÍòµÄ£¬Òª¿´Ìá×îºóÊýÁÐÖÕÖ¹µ½1ʱºòµÄ³¤¶È¡£

PS£ºÕâ¶«Î÷²»ÄÜÓùéÄÉ·¨Ö¤³öÀ´Âð£¿
PS2£º×¢Òâ1·ÖÖÓÔ­Ôò°¡¡£²»¹ý£¬´óÓÚ1·ÖÖӵijÌÐòÒ²¿ÉÒÔ·¢ÉÏÀ´£¬ÕâÑù²ÅÓеĽ»Á÷¡£

Here we go!
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

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

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

huycwork

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

¡ï ¡ï ¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû
ÓàÔó³É(½ð±Ò+3, ³ÌÐòÇ¿Ìû+1): ÐÁ¿àÁË£¡ 2011-05-20 21:02:20
×òÌìдºÃÕâ¸öÁË£¬C++°æ±¾µÄÊǽ´×Ï£º
CODE:
#include
enum {BUFSZ = 1000000};

size_t eular14(size_t bufsz = 1000000){
        size_t buf[BUFSZ+1];
        size_t max = 1, c, r;
        long long n;
        buf[1] = 1;
        for(int i = 2; i < BUFSZ + 1; ++i){
                n = i;
                c ^= c;
                while(1){
                        if(n < BUFSZ && buf[n])
                                break;
                        ++c;
                        if(n % 2){
                                n = 3*n + 1;
                        }else
                                n = n/2;
                }
                buf[i] = buf[n] + c;
                if(buf[i] > max){
                        max = buf[i];
                        r = i;
                }
        }
        return r;
}

int main(void){
        std::cout< }

äöÎеÄÖÐÐÄÓÐÒ»¿é¿ÕµØ£¬¿Õ¿ÕµÄ¡£
2Â¥2011-05-20 17:05:54
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

wangww2011

ľ³æ (ÖøÃûдÊÖ)

¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû
ÓàÔó³É(½ð±Ò+1): ˵µ½£¡ 2011-05-20 21:02:42
΢³¾¡¢ÃÎÏë(³ÌÐòÇ¿Ìû+1): ºÜºÃ£¬»¶Ó­³£À´£¡ 2011-05-21 19:18:45
¸ø¸öµü´úËã·¨°É£¬0.05s ÏÈ¿´½á¹û£º
CODE:
max=837799  count=525
elapsed time=0.050000 seconds.

´úÂëΪ
CODE:
#include
#include
#include

#define TIMERSTART clock_t start_time,stop_time;double elapsed_time;start_time = clock();
#define TIMERSTOP stop_time = clock();elapsed_time=(double)(stop_time-start_time)/CLOCKS_PER_SEC;printf("elapsed time=%f seconds.\n",elapsed_time);

#define N 1000001
static int count[N];

int euler14(long long n){
  int result;

  if(n0){
    return count[n];
  }

  if(n%2) {
    n=3*n+1;
  }else {
    n=n/2;
  }
  result=euler14(n);

  if(n     count[n]=result;
  }

  return result+1;
}


int main(void){
  int i=0;
  int max_count,max;

  TIMERSTART;
  count[1]=1;
  
  max_count=0;
  for(i=N-1;i>1;i--){
    if(count[i]==0){
       count[i]=euler14(i);
    }
    if(count[i]>max_count){
      max_count=count[i];
      max=i;
    }
  }

  printf("max=%d  count=%d\n",max,max_count);

  TIMERSTOP;

  return 0;
}

[ Last edited by wangww2011 on 2011-5-21 at 14:14 ]
3Â¥2011-05-20 17:53:37
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

huycwork

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

¡ï ¡ï ¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû
ÓàÔó³É(½ð±Ò+3): ¹ÄÀø½»Á÷£¡ 2011-05-20 21:03:01
Õâ¸öÓùéÄÉ·¨Ö¤Ã÷ÊÇÖ¤Ã÷²»³öÀ´µÄ
ǰÌáÌõ¼þ¿ÉÒÔÑ¡2->1
µ«ÊǺóÃæÎÞ·¨×÷³ö¹éÄɼÙÉ裺¾ÍËãÄã¼ÙÉèan -> ak£¬¹éÄɵÄÏÂÒ»²½Öè¾ÍÊÇa(n+1)û·¨ÍƵ¼a(k+1)£¬Äã¿´´úÂë¾ÍÖªµÀÁË£¬ÄãÎÞ·¨ÖªµÀÖмä²úÉúµÄÁ´ÌõÓж೤£¬Êµ¼ÊÔ­ÒòÊÇÎÞ·¨ÖªµÀÖм侭¹ýµÄÔªËØÓÐÄÄЩ£¬µ±È»Ò²¾ÍÎÞ·¨¹éÄÉÖ¤Ã÷¡£
äöÎеÄÖÐÐÄÓÐÒ»¿é¿ÕµØ£¬¿Õ¿ÕµÄ¡£
4Â¥2011-05-20 18:03:01
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

΢³¾¡¢ÃÎÏë

ľ³æ (ÖªÃû×÷¼Ò)

¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû
ÓàÔó³É(½ð±Ò+1): ¹ÄÀø½»Á÷£¡ 2011-05-20 21:03:21
Õâ²»ÊÇÖøÃûµÄ3x+1ÎÊÌâÂð£¿ÒÔǰд¹ýÕâ¸ö³ÌÐò£¬Ò²ÊÔ×ÅÖ¤¹ýÕâµÀÌ⣬¿´×Åͦ¼òµ¥£¬ÒªÕæÖ¤ÆðÀ´£¬²Å·¢ÏÖ¸ù±¾²»¿ÉÄÜ£¬·ñÔòËüÒ²²»ÊÇÊÀ½çÄÑÌâÁË¡­¡­
ÈηçÔÆ±ä»Ã£¬ÎÒЦ¶ÔÈËÉú£¡
5Â¥2011-05-20 18:27:20
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

libralibra

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

æôÆï½«¾ü

¡ï ¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû
jjdg(½ð±Ò+2): ÐÁ¿àÁË 2011-05-21 00:51:59
΢³¾¡¢ÃÎÏë(³ÌÐòÇ¿Ìû+1): 2011-05-21 19:19:39
matlabµÄ,13s¶àŶ
CODE:
%% Which starting number, under one million, produces the longest chain?
%   n = n/2 (even); n = 3*n+1 (odd) till n==1
% like starting from 13, we generate the following sequence (contains 10 terms)
%  13 ¡ú 40 ¡ú 20 ¡ú 10 ¡ú 5 ¡ú 16 ¡ú 8 ¡ú 4 ¡ú 2 ¡ú 1

function result = euler14()
tic;
n = 0;
len = 0;
big = 0;
result = 0;
for i=1:1e6
    n = i;
    len = 0;
    while n~=1
        if mod(n,2)==0
            n = n/2;
        else
            n = n*3+1;
        end
        len = len+1;
    end
    len = len+1; % n==1
   
    if len>big
        big = len;
        result = i;
    end
end
toc;
end

½á¹û
CODE:
% Elapsed time is 13.644453 seconds.
% ans =
%       837799

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

holmescn

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

΢³¾¡¢ÃÎÏë(³ÌÐòÇ¿Ìû+1): 2011-05-21 19:19:52
matlab¹ûÈ»ÊDz»¸øÁ¦°¡£¬Fortran°æµÄÖ»Òª0.75s
CODE:
Program euler14
    Implicit None
    Integer :: maxLen = 0, l
    Integer(8) :: n
    Integer :: start, maxStart
    Real :: t1, t2
    Call CPU_Time(t1)
   
    Do start = 2, 1000000
        n = start
        l = 0
        Do While (n .gt. 1)
            If(mod(n, 2) .eq. 0) Then
                n = n / 2
            Else
                n = 3*n + 1
            EndIf
            l = l + 1
        EndDo
        l = l + 1
        If(l .gt. maxLen) Then
            maxLen = l
            maxStart = start
        EndIf
    EndDo
    Call CPU_Time(t2)
    Print *, "Result:", maxStart, maxLen, t2-t1
End Program euler14

½á¹ûͬlibralibraͬѧ¡£²»¹ý¿Ö²ÀµÄÊÇ£¬ÖмäÏî¾ÓÈ»»á´óÓÚ40ÒÚ°¡¡£32λÕûÊý¶¼±£´æ²»ÁËÁË¡£×îºó×ܹ²ÓÐ525Ïî¡£Õâ¶«Î÷ÓÃMathematicaµÄNestListÕ¹¿ª»áÊÇʲôÑù£¿

ÏÖÔڵļÆËã»úËÙ¶ÈÌ«¿ìÁË£¬ÒÔÖÁÓÚÎÒÃǶ¼²»ÏëÈ¥ÕÒÒ»¸ö¸üºÃµÄ½â·¨ÁË£¬²»¹ý£¬Õâ¶«Î÷µÄ½â¿Õ¼äÓ¦¸Ã»¹ÄܼõС£¬ÎÒ¿´µ½2µ½3000ÒÔÄÚ¶¼»¹Êǵ¥µ÷ÉÏÕǵÄÄØ¡£
7Â¥2011-05-21 13:40:36
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

wmc_1979

½ð³æ (СÓÐÃûÆø)

¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû
ÎÒ¼ÆËã³öÊÇ     837799
ÏîÊý  524

[ Last edited by wmc_1979 on 2011-5-21 at 20:38 ]
8Â¥2011-05-21 20:04:41
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

holmescn

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

¡ï
ÓàÔó³É(½ð±Ò+1): лл²ÎÓë½»Á÷£¡ 2011-05-22 11:53:05
ÒýÓûØÌû:
Originally posted by wmc_1979 at 2011-05-21 20:04:41:
ÎÒ¼ÆËã³öÊÇ     837799
ÏîÊý  524

[ Last edited by wmc_1979 on 2011-5-21 at 20:38 ]

µ±n=1µÄʱºò£¬¾ÍÍ˳öÑ­»·ÁË£¬ËùÒÔÈÏΪ×îºó¼ÆÊýµÄʱºòûÓÐÊý1
9Â¥2011-05-22 09:08:54
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

chyanog

½ð³æ (СÓÐÃûÆø)

¡ï
Сľ³æ: ½ð±Ò+0.5, ¸ø¸öºì°ü£¬Ð»Ð»»ØÌû
MathematicaºÍÖеĵݹé¿ÉÒԺܷ½±ãµÄ¡°¼ÇÒ仯¡±£¬ºÜ¼ò½àµ«»¹ÊÇûÓбàÒëºóµÄÑ­»·¿ì£º
Euler ¹¤³Ì µÚ14Ì⣺ÕÒ×µÄÊýÁÐ
CODE:
c@1 = 1; c@n_ := c@n = 1 + If[EvenQ@n, c[n/2], c[3 n + 1]];
Ordering[c /@ Range@1*^6, -1] // AbsoluteTiming


cf = Compile[{{n0, _Integer}},
   Block[{n = N@n0},
    Catch@Do[If[n == 1, Throw@i];
      n = If[FractionalPart[n/2] == 0, n/2, 3*n + 1],
      {i, 1*^8}]
    ], RuntimeAttributes -> Listable,
   CompilationTarget -> "C", RuntimeOptions -> "Speed"
   ];

Ordering[cf@Range@1*^6, -1] // AbsoluteTiming

10Â¥2013-10-05 01:49:15
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ holmescn µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] ²ÄÁÏÇóµ÷¼Á +5 @taotao 2026-03-21 5/250 2026-03-21 20:55 by lbsjt
[¿¼ÑÐ] 311Çóµ÷¼Á +12 ¶¬Ê®Èý 2026-03-15 13/650 2026-03-21 19:07 by ColorlessPI
[¿¼ÑÐ] Çóµ÷¼Á +4 ÒªºÃºÃÎÞÁÄ 2026-03-21 4/200 2026-03-21 18:57 by ѧԱ8dgXkO
[¿¼ÑÐ] Ò»Ö¾Ô¸ÄÏ´ó£¬0703»¯Ñ§£¬·ÖÊý336£¬Çóµ÷¼Á +3 ÊÕµ½VS 2026-03-21 3/150 2026-03-21 18:42 by ѧԱ8dgXkO
[¿¼ÑÐ] ÄÜÔ´²ÄÁÏ»¯Ñ§¿ÎÌâ×éÕÐÊÕ˶ʿÑо¿Éú8-10Ãû +5 ÍÑÓ±¶ø³ö 2026-03-16 15/750 2026-03-21 10:16 by ÍÑÓ±¶ø³ö
[¿¼ÑÐ] 310Çóµ÷¼Á +3 baibai1314 2026-03-16 3/150 2026-03-21 03:56 by JourneyLucky
[¿¼ÑÐ] 083200ѧ˶321·ÖÒ»Ö¾Ô¸ôßÄÏ´óѧÇóµ÷¼Á +3 innocenceF 2026-03-17 3/150 2026-03-21 02:35 by JourneyLucky
[¿¼ÑÐ] ¶þ±¾¿ç¿¼Ö£´ó²ÄÁÏ306Ó¢Ò»Êý¶þ +3 z1z2z3879 2026-03-17 3/150 2026-03-21 02:29 by JourneyLucky
[¿¼ÑÐ] 307Çóµ÷¼Á +10 ÀäóÏ123 2026-03-17 10/500 2026-03-21 01:54 by JourneyLucky
[¿¼ÑÐ] 311Çóµ÷¼Á +5 ¶¬Ê®Èý 2026-03-18 5/250 2026-03-21 00:16 by JourneyLucky
[¿¼ÑÐ] 22408 344·Ö Çóµ÷¼Á Ò»Ö¾Ô¸ »ªµç¼ÆËã»ú¼¼Êõ +4 solanXXX 2026-03-20 4/200 2026-03-20 23:49 by alg094825
[¿¼ÑÐ] ҩѧ383 Çóµ÷¼Á +3 ҩѧchy 2026-03-15 5/250 2026-03-20 22:11 by ÔÆÓÎÖØÑô
[¿¼ÑÐ] 290Çóµ÷¼Á +7 ^O^Ø¿ 2026-03-19 7/350 2026-03-20 21:43 by JourneyLucky
[¿¼ÑÐ] 295¸´ÊÔµ÷¼Á +8 ¼òľChuFront 2026-03-19 8/400 2026-03-20 20:44 by zhukairuo
[¿¼ÑÐ] ¹ãÎ÷´óѧ¼ÒÇÝÒÅ´«ÓýÖÖ¿ÎÌâ×é2026Äê˶ʿÕÐÉú£¨½ÓÊÕ¼ÆËã»úרҵµ÷¼Á£© +3 123°¢±ê 2026-03-17 3/150 2026-03-20 15:58 by ·ÉÐÐçù
[¿¼ÑÐ] 0856µ÷¼Á£¬ÊÇѧУ¾ÍÈ¥ +8 sllhht 2026-03-19 9/450 2026-03-20 14:25 by ÎÞи¿É»÷111
[¿¼ÑÐ] 334Çóµ÷¼Á +3 Ö¾´æ¸ßÔ¶ÒâÔÚ»úÐ 2026-03-16 3/150 2026-03-18 08:34 by lm4875102
[¿¼ÑÐ] ¿¼ÑÐÇóµ÷¼Á +3 éÙËÌ. 2026-03-17 4/200 2026-03-17 21:43 by ÓÐÖ»ÀêÅ«
[¿¼ÑÐ] ÓÐûÓеÀÌú/ÍÁľµÄÏëµ÷¼ÁÄÏÁÖ£¬¸ø×Ô¼ºÕÐʦµÜÖС« +3 TqlXswl 2026-03-16 7/350 2026-03-17 15:23 by TqlXswl
[¿¼ÑÐ] 0856ר˶279Çóµ÷¼Á +5 ¼ÓÓͼÓÓÍ£¡? 2026-03-15 5/250 2026-03-15 11:58 by 2020015
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û