HP Forums
another interesting math riddle - Printable Version

+- HP Forums (https://www.hpmuseum.org/forum)
+-- Forum: Not HP Calculators (/forum-7.html)
+--- Forum: Not remotely HP Calculators (/forum-9.html)
+--- Thread: another interesting math riddle (/thread-9920.html)



another interesting math riddle - Don Shepherd - 01-13-2018 01:37 AM

145 = 1! + 4! + 5!

find three other numbers like that.


RE: another interesting math riddle - Gerson W. Barbosa - 01-13-2018 02:04 AM

1 = 1!

2 = 2!

Well, that’s 2/3 of the answers. In an examination that would grant me a C, wouldn’t it? :-)


RE: another interesting math riddle - Joe Horn - 01-13-2018 06:02 AM

UBASIC:

list
   10   repeat:inc X0:X=X0:clr T
   20   while X>0:X\=10:T+=!(res):wend
   30   until T=X0:print T:goto 10
OK
run
 1
 2
 145
 40585



RE: another interesting math riddle - Don Shepherd - 01-13-2018 06:14 AM

Joe, you got it.

I got this from a book, "The Penguin Dictionary of Curious and Interesting Numbers." At first I thought 40585 was wrong until I remembered that 0!=1 and not 0, another math oddity.


RE: another interesting math riddle - Didier Lachieze - 01-13-2018 10:03 AM

To find a limit to the numbers that could meet the criteria, we can compare the number of digits of a number to the number of digits of the maximum sum of its digits factorials.

On the Prime in the sequence app, entering U1(N)= CEILING(LOG(9!*N))-N and going to the NUM view tells us that any number with more 7 digits cannot meet the criteria as it is superior to the maximum sum of its digits factorials (9!*8 has only 7 digits and is lower than any 8-digit number) and that for 7 digit numbers only the ones below 9!*7 (2540160) are candidates.

So the following program returns all possible solutions :
Code:
EXPORT TST()
BEGIN
 LOCAL n,r:={};
 FOR n FROM 1 TO 9!*7 DO
  IF ΣLIST((ASC(STRING(n))-48)!)==n THEN r(0):=n END;
 END;
 RETURN r;
END;

On my Prime rev C with the Beta 3 firmware it returns {1,2,145,40585} after 16'21".

There may be smarter and faster ways to check for all possible solutions.


RE: another interesting math riddle - SlideRule - 01-13-2018 12:47 PM

(01-13-2018 06:14 AM)Don Shepherd Wrote:  … from … "The Penguin Dictionary of Curious and Interesting Numbers." …

page 140 ?

BEST!
SlideRule


RE: another interesting math riddle - Don Shepherd - 01-13-2018 03:34 PM

(01-13-2018 12:47 PM)SlideRule Wrote:  
(01-13-2018 06:14 AM)Don Shepherd Wrote:  … from … "The Penguin Dictionary of Curious and Interesting Numbers." …

page 140 ?

BEST!
SlideRule

yes, that's where I saw it.


RE: another interesting math riddle - SlideRule - 01-13-2018 05:28 PM

from the front cover insert of the Penguin Dictionary of Curious & Interesting Geometry
David Wells was born in 1940. He had the rare distinction
of being a Cambridge scholar in mathematics and
failing his degree. He subsequently trained as a teacher
and, after working on computers and teaching machines,
taught mathematics and science in a primary school and
mathematics in secondary schools. He continues to be
involved with education through writing and working
with teachers.
While at university he became British under-21 chess
champion, and in the middle seventies was a game inventor,
devising 'Guerilla' and 'Checkpoint Danger', a
puzzle composer, and the puzzle editor of Games and
Puzzles magazine. From 1981 to 1983 he published The
Problem Solver, a magazine of mathematical problems
for secondary pupils. He has published several books of
problems and popular mathematics, including Can You
Solve These? and Hidden Connections, Double
Meanings, and also publishes the journal Studies of
Meaning, Language and Change. He has written The
Penguin Dictionary of Curious and Interesting Numbers

and recently published a book comparing the psychology
of the Russians with that of the West.

sic: bold my emphasis
[attachment=5559] [attachment=5560]
BEST!
SlideRule


RE: another interesting math riddle - olr - 01-13-2018 09:08 PM

(01-13-2018 10:03 AM)Didier Lachieze Wrote:  On my Prime rev C with the Beta 3 firmware it returns {1,2,145,40585} after 16'21".

There may be smarter and faster ways to check for all possible solutions.

Another approach is to go through all sorted lists containing up to 7 digits, calculate the "factorial sum" of the digits and compare the digits of the sum with those in the list. There are \( \sum_{j=1}^7 \binom{9+j}{j} = 19447 \) sorted lists with up to 7 digits. Hence only 19447 possibilities need to be checked (and not 2540160).

If we additionally take into account that at least three (of seven) digits need to be 9s in order to get a 7-digit factorial sum ( \( 5\cdot 8!+2\cdot 9! = 927360 \) ), the number of sorted lists with seven digits decreases from 11440 down to 715. Therfore only a total of 8722 possibilities need to be checked.

The following program returns the result in 9 seconds on my Prime rev A (in 19 seconds if the 7-digit optimization is removed).

Code:

EXPORT TST()
BEGIN
    // r result list
    // l list of digits  
    // s factorial sum
    // n helper
  LOCAL 
    r:= {}, 
    l:= {0},
    s, n;

  WHILE SIZE(l) <= 7 DO
  
    s:= ΣLIST(l!);

    IF EQ( l, SORT(ASC(STRING(s))-48) ) THEN
      // The sum of factorials contains exactly
      // the summed up digits
      r(0):= s;
    END;

    // get next list of digits
    // add 1 to the last digit, that is different from 9
    // set succesor digits to the same value
    n:= SIZE(l);
    WHILE n > 0 AND l(n) == 9 DO
      n:= n-1; 
    END;
  
    IF n > 0 THEN
      l(n):= l(n)+1;
      WHILE n < SIZE(l) DO
        // a digit is never smaller than its predecessor
        l(n+1):= l(n); 
        n:= n+1; 
      END;
    ELSE
      // all digits are 9s -> new digit
      l:= MAKELIST(0,X,1,SIZE(l)+1);
    END;  

    // to get a 7-digit number at least three 9s are necessary
    // 8!*5 + 9!*2 = 927360
    IF SIZE(l) == 7 THEN
      l(5):= 9;
      l(6):= 9;
      l(7):= 9;
    END;

  END;
  RETURN r;
END;



RE: another interesting math riddle - Didier Lachieze - 01-13-2018 10:29 PM

(01-13-2018 09:08 PM)olr Wrote:  Another approach is to go through all sorted lists containing up to 7 digits, calculate the "factorial sum" of the digits and compare the digits of the sum with those in the list.

Great solution and optimization !


RE: another interesting math riddle - Joe Horn - 01-14-2018 07:10 AM

(01-13-2018 10:03 AM)Didier Lachieze Wrote:  ... any number with more 7 digits cannot meet the criteria as it is superior to the maximum sum of its digits factorials (9!*8 has only 7 digits and is lower than any 8-digit number) and that for 7 digit numbers only the ones below 9!*7 (2540160) are candidates.

That's true in base 10, but if we extend the riddle to larger bases, it allows the factorials to be larger. For example, both 1441 and 1442 are solutions in base 15:

#1441d = #661(15) = 6! + 6! + 1!
#1442d = #662(15) = 6! + 6! + 2!

Unfortunately there don't seem to be ANY solutions which include a digit > 9, regardless of base. Strange.


RE: another interesting math riddle - Gamo - 01-14-2018 10:22 AM

Here another interesting math riddle.

12345 MOD 67890 = 12345

98765 MOD 43210 = 12345

Gamo


RE: another interesting math riddle - grsbanks - 01-14-2018 10:44 AM

(01-14-2018 10:22 AM)Gamo Wrote:  Here another interesting math riddle.

12345 MOD 67890 = 12345

Err... Nothing surprising about that one.

X MOD Y = X for all cases where X < Y


RE: another interesting math riddle - Didier Lachieze - 01-17-2018 11:59 PM

(01-13-2018 09:08 PM)olr Wrote:  The following program returns the result in 9 seconds on my Prime rev A (in 19 seconds if the 7-digit optimization is removed).

Code:

EXPORT TST()
BEGIN
    // r result list
    // l list of digits  
    // s factorial sum
    // n helper
  LOCAL 
    r:= {}, 
    l:= {0},
    s, n;

  WHILE SIZE(l) <= 7 DO
  
    s:= ΣLIST(l!);

    IF EQ( l, SORT(ASC(STRING(s))-48) ) THEN
      // The sum of factorials contains exactly
      // the summed up digits
      r(0):= s;
    END;

    // get next list of digits
    // add 1 to the last digit, that is different from 9
    // set succesor digits to the same value
    n:= SIZE(l);
    WHILE n > 0 AND l(n) == 9 DO
      n:= n-1; 
    END;
  
    IF n > 0 THEN
      l(n):= l(n)+1;
      WHILE n < SIZE(l) DO
        // a digit is never smaller than its predecessor
        l(n+1):= l(n); 
        n:= n+1; 
      END;
    ELSE
      // all digits are 9s -> new digit
      l:= MAKELIST(0,X,1,SIZE(l)+1);
    END;  

    // to get a 7-digit number at least three 9s are necessary
    // 8!*5 + 9!*2 = 927360
    IF SIZE(l) == 7 THEN
      l(5):= 9;
      l(6):= 9;
      l(7):= 9;
    END;

  END;
  RETURN r;
END;

I've made a few changes to your program and now it returns the result in less than 7 seconds.

Code:
EXPORT TST()
BEGIN
    // r result list
    // l list of digits  
    // s factorial sum
    // n helper
  LOCAL 
    r:= {}, 
    l:= {0},
    k, s, n;

  WHILE SIZE(l) <= 7 DO
  
    s:= ΣLIST(l!);

    IF EQ( l, SORT(ASC(STRING(s))-48) ) THEN
      // The sum of factorials contains exactly
      // the summed up digits
      r(0):= s;
    END;

    // get next list of digits
    // add 1 to the last digit, that is different from 9
    // set successor digits to the same value
    n:= (POS(l,9)-1) MOD (SIZE(l)+1);
  
    l(n):= (l(n)+1) MOD 10; //if n=0, add a 0 element to l
    FOR k FROM n TO SIZE(l)-1 DO
      // a digit is never smaller than its predecessor
      l(k+1):= l(k); 
    END;

    // to get a 7-digit number at least three 9s are necessary
    // 8!*5 + 9!*2 = 927360
    IF SIZE(l) == 7 THEN 
      l:=CONCAT(l({1,4}),{9,9,9});
    END;

  END;
  RETURN r;
END;