Extra footage: ruclips.net/video/E4mrC39sEOQ/видео.html Matt's new book is Humble Pi: bit.ly/Humble_Pi More Matt videos on Numberphile: bit.ly/Matt_Videos
@@mrJety89 Or really you could look to multiply out to any permutation of the digits in 277777788888899. Maybe it's easier to end up with an even number like 997777778888882.
With a little bit of extra interfacing it could make logical sense. Like the final number gives an additional string "Final entry: X". But yeah, he said he "could just" remove it, he never said he would.
I love how Matt is willing to think and even make mistakes on camera. That kind of security in one’s intelligence probably makes someone really easy to get along with.
Except Matt isn't perfect, he makes tons of mistakes all the time, he's just secure that his mistakes don't reflect on his actual abilities. Otherwise we wouldn't have the brilliant "Parker X" banter that makes his channel and Numberphile's channel so entertaining.
@@efulmer8675 I think that was the point. A person who claims to be perfect is likely to be fake, and you can’t trust someone like that. A person who doesn’t mind getting caught making mistakes, because he never pretended to be perfect in the first place, is more likely to be someone you can trust.
32 is a number I find inherently attractive for no apparent reason (other than being a power of 2). I don’t find 16 as attractive but I do love it being the only number that can be described as x^y and y^x where x and y are differing positive integers (2 and 4, for the record). Overall I just love powers of 2. Numbers like 12 and 24 are cute and all, but that factor of 3 feels like an imperfection.
At first I thought that Matt was extremely brave to be so confident in his coding skills that he would be willing to do it live on the internet in front of an audience of nerds. Then I realized that Matt is not ashamed to be caught making mistakes. In truth, that's one of the things I admire most about him.
It was me in engineering school... I was double checking simple multiplications because I was more stressed to get it wrong because of them than with the reasoning of the math!
He's a mathematician, he does it in a sequence, it doesn't matter how simple is an action. It's the order inside your mind. Because the moment he says "nah, I don't have to do it, it's obvious" he starts to make mistakes. From small to bigger and for math these are all the same. He's learned the hard way to be patient and correct. So it's now a reflex. =)
I had a weird habit of refusing to accept a calculator when I took math tests in junior high school in the late 90s. My math teacher was always like "shouldn't you have a calculator, though?" and I said NO, and insisted on calculating everything by hand. Not sure why, but maybe I wanted to prove to myself that I could do it without a calculator or something.
Well he wanted to multiply all the digits together, so he started with 2 x 7. Sure he could have typed 14 straight away and saved two button presses, but he didn't.
I think Matt hit on an important bit when he mentioned the base-ten-ness of this problem. Consider that in base 2, you can never have a number that multiples to anything other than 1 or 0. Has anybody checked for patterns across bases?
i would think base 10 is definitely the reason for 11 being the maximum probably a proof if you generalize a base 10 number as a sum of multiples of powers of 10 where you can manage to pull out a "10" after 10 steps and then you will get the 11th step always resulting in 0 and there being no way to continue
For some reason, I always like videos about really big numbers. It seems it’s more interesting for a large number to be special.. because it’s so specific!
I know it's a joke. But let me educate others. Matt is a mathematician, not a coder. He is not expected to know the tiny nuances of coding. What matters is whether his logic is correct. So returning "DONE" is perfectly fine. Also, using Python2 is also fine. It's not like this code is some multi-client multi-threaded huge application which needs to maintained for a long time. It's just a simple script to crunch some numbers. No need to bring Python3 here as he is comfortable with Python2. But it's encouraged to shift to it. (I myself shifted to Python3 a month back)
I wrote a small C program to brute-force output the numbers. I think it's correct, if I understood the problem correctly. It should go through all natural numbers through 18446744073709551615 (the maximum size of an 8-byte unsigned long long in C). It's been running for a few hours now and I have 1-10. Terminal output: 10-> 0 Number 10 has score: 1 25-> 10-> 0 Number 25 has score: 2 39-> 27-> 14-> 4 Number 39 has score: 3 77-> 49-> 36-> 18-> 8 Number 77 has score: 4 679-> 378-> 168-> 48-> 32-> 6 Number 679 has score: 5 6788-> 2688-> 768-> 336-> 54-> 20-> 0 Number 6788 has score: 6 68889-> 27648-> 2688-> 768-> 336-> 54-> 20-> 0 Number 68889 has score: 7 2677889-> 338688-> 27648-> 2688-> 768-> 336-> 54-> 20-> 0 Number 2677889 has score: 8 26888999-> 4478976-> 338688-> 27648-> 2688-> 768-> 336-> 54-> 20-> 0 Number 26888999 has score: 9 3778888999-> 438939648-> 4478976-> 338688-> 27648-> 2688-> 768-> 336-> 54-> 20-> 0 Number 3778888999 has score: 10
@@roguechlnchllla6564 Even better, notice how the result of the multiplication is always of the form 2^a × 3^b × 7^c, since you're just multiplying lots of digits together. The 4's, 8's and 9's can be broken down into multiple 2's or 3's, and the 5 never appears with any 2's without instantly giving a multiple of 10 and therefore a zero at the start. Now, the problem just boils down to finding three integers, a, b and c, such that 2^a × 3^b × 7^c is a number with a multiplication persistence of 11.
@@defectus1769 You beat me to it. I too was thinking about that. I also thought of reverse engineering the next number. Ex. 2, 12, 34, it ends at 34, since it needs 2*17. 17 is a 2 digit number and a prime. Ex. 2, 12, 43. Ex. 2, 12, 223 or 232 or 322. Some of which can go further. Ex. 2, 21, 37. Ex. 2, 21, 73. I tried 6, and got myself a little tree of options to start from. They all end with 6. But I don't know how to write a program that looks for reversed engineer all options. If someone makes that, you could use that 11 parts number as a start. All possible answers would roll out. And perhaps even more. Since you are right about 2, 3 and 7. You could easily weed wrong answers out for the next step.
The reverse approach might be better - instead of looking for numbers that result in most steps, look for steps and reconstruct the number that should give these steps. For instance if the last step is 20 then we should go for number whose digits are divisors of 20, like 225 or 45, and so on
any permutation of these digits have the exact same persistence and it's pretty obvious. changing two digits around and calling it adding 90 is a little weird
0:14 "277,777,788,888,899" - written on the paper "277,777,778,888,899" - said by Matt Don't think we wouldn't find a Parker Square in this one too, mister Matt!
@MilesTisserand , if you mean any number has an equal chance of being chosen, I have a feeling the odds would lean heavily to 1 and 2 steps because of how often 0 comes up. It would be interesting to see the odds if you automatically exclude certain numbers that you know will drag down the average (like any that has 0 from the start).
@MilesTisserand Interesting idea. If I wasn't a busy undergrad, I would definitely try it out and graph the probability distribution. It'd be crazy to find a hidden poisson or something haha
Hey mate, after watching this video I have spent hours upon hours trying to figure out a formula. I haven't come up with an exact formula, however, I have noted that if you start *backwards* you can go around in circles for ages. Take the single digit number 6, for example. Now 6 has 4 factors, 1-6 and 2-3. With this, we can make 4 number, from the 4 factors... 16 23 32 61 We know two of these are primes so they are irrelevant, bye bye 23 and 61 now, with 16 and 32, one is the double of the other - ill come back to this. So, like before, 16 has 3/single digit factors, 2-8,4-4 from this, we can make 28, 44, 44:) and 82 We can continue this sequence until all our remaining factors and their combinations only have primes as factors, and then this final number we can put into the program, or calculate yourself and figure out the steps, coming back to the final figure/our figure, 6. I'll leave you with one last thing. 23 earlier, was a prime number and we could not continue it in the sequence, however; 2*3=6 but so does 1*2*3, and 1*1*2*1*3*1*1 This is the difficulty I am facing with my current formula, as there is nothing against placing 1s into a prime number solution or just any solution in general and then continue on from there-doing the same thing over and over again. It does just mean one thing - your final solution will be longer than the current record, however, we can break the record and set a new one. I'll let you break the record though, is too tired now :)
@@onehotseat You... missed the point. Ethan started on a random single-digit number, and created a sequence that would go to it (28 -> 16 -> 6) by factoring it. It's transparent how this method works - you find single-digit factors of a number, and string them together to create a new number (factors of 16 are 1,16, 2,8, 4,4, so 28 and 44 both go to 16 which goes to 6). Using the same method we continue - single-digit factors of 28 are 4,7. 47 is prime, and 74 has no single-digit factors. However, 4 is 2x2, so we also have 227, 272, 722. And none of them have single-digit factors, so we can't continue this sequence past length 3 (47 -> 28 -> 16 -> 6) Adding 1 to the _starting_ number is pointless, but we don't _have_ a starting number. However, a 1 in an intermediate step is not harmful, and only expands the number of possibilities for reversing a sequence. We can't continue the sequence from 23 because 23 is prime - nothing will multiply to it. However, by inserting 1s, we could end up with a number that contains only a 2, a 3, and a ton of 1s, with single-digit factors. From these, we can construct a number that multiplies the number we found with 2, 3, and 1s, and that number will multiply to 16. At the extreme, there's the number from the video. That one ends at 0, and there's infinitely many numbers that can lead to 0. Picking one at random, 20, gives us more factors to play with. 20 factors to 4,5, giving us 225, 252, 522, 45, and 54. Continuing in this fashion, we get to 438939648, which has factors 2^12, 3^7, 7^2, all single-digit. However, you may notice that there's no way to arrange and combine those factors that gives us another number with single-digit factors, _unless_ if you slot in a 1 and end up with the number 4996238671872. That number _does_ have single-digit factors - a 2, 6 7s, 6 8s, and 4 3s. I'm just not sure whether this number theory method is faster than brute forcing. There's already a plethora of ways to rearrange and combine factors of large numbers, and you have to find the ones with single-digit factors. You then have to account for the fact that every combination could have any number of 1s put into it, in any position, and factorise those too, all of which sounds computationally more expensive than just multiplying down the digits of most numbers from 1 to 10^320
Toying with this for a while, I think I found a way to get to higher numbers. If you check the steps on each number, they always repeat the lower steps. Like, 277777788888899, results first is 4996238671872, then later is 438939648. While the one beneath it, 3778888999, the next step is 438939648. This could mean that a way to find the 12th number, maybe the second step of it is the first step of the 11th one. Not a rule, since the smaller ones seem to break it, but bigger ones a very consistent.
It does indeed seem like 11 is the limit. I calculated up to 1500 digits and there aren't any solutions. Similarly, I computed limits for bases 2-10, Base 2: 1 Base 3: 3 Base 4: 3 Base 5: 5 Base 6: 5 Base 7: 8 Base 8: 6 Base 9: 7 Base 10: 11 They all reach this "cliff" after which there's no answers as far as I computed, so it's probably fair to conjecture they all reach limits.
Step 1. Run complex problems that nobody has answered! Step 2. Wait Step 3. Wait ... Step 9. Wait Step A. Wait Step B. Wait ... Step FC. Wait Step FD. Wait Step FE. Wait Step FF. Wait Step 100. Boom! You got an answer and a fire!
I think it would be important to consider other base counting systems. Ten is a weird number, so start with smaller (or maybe larger) bases to see what might be going on underneath all of it. Certainly, larger bases will have larger persistence measures because a randomly chosen number will have a smaller chance of having a zero in the product of its digits.
I discovered this trick when I was bored a school and started to multiply persistently numbers in the calculator. I always found it a very intriguing trick, didn't know it was actually a mathematical curiosity
Judging from the videos in this channel, anything and everything is a mathematical curiosity when the simplest problems can be scaled up, and up, and up, until it isn't trivial anymore. There are quite a few other videos like this where the game is pretty simple, but then when you continue to play it, it gets more difficult. Then they whip out the brown paper
This video gives the known lower bound for P(n) = 12 as n > 10^233. The latest result is from Tim Peters (Sept 2023): " A long computer run checked N=30000, a bit over 36*10^12 candidates. The smallest candidate with more than 30000 digits is > 2.67*10^30000, which is the smallest remaining possibility for a(12)"
You can reduce the sample spaces even further. You can eliminate all numbers with a 1 in it (since it has no effect on the result), and can eliminate all numbers that start 34.... (you can start 26...) or 36..... (similar to 2....9). edit: Also just realised it could never have more than 1 six in it, as two sixes allows 4....9 for a smaller number. And it cannot start 44 since it allows 2....8...
You can also calculate the thing backwards (i.e. start from the smallest number, then work your way upwards), which would probably make the thing much faster.
@@Luxalpa I thought some more about it, and I think that any numbers beating it will have to start with 2,3,4,6,7,8,9 or 26 before we hit the wall of 789s (and obviously kept in digital order). If we cheat and count 26 as one digit for the purpose of recording length (obviously we multiply by 12 still), then we only need to check 210680 numbers to check all numbers of length 230, and even that is double counting some numbers.
@@manudude02 I would like to know how you got to that idea. I myself found a way to get up to length 1600 with fairly realistic effort (without requiring a super computer that is). Basically, the realization is that all chain numbers (i.e. all numbers except for the starter) must be N = 2^x * 3^y * 7^z. So you just need to go through all the x, y and z, find a number that doesn't contain 0 or 5, and then see if the multiplied digits result in any other of those numbers. With x, y, z < 1000 you only need to check 1 billion numbers. Storing them all on a hard disk would take some 1.6 TB of storage, however I think if you exclude all the numbers with 0 and 5 in it, the storage requirement will probably be much lower (I'll have to double check my math on that one or just learn Python and give it a try).
@@Luxalpa Obviously we are not going to have zeros or one and removing 5s (not checked, but I doubt you can avoid even numbers for long), but look at every 2-digit other case. I ignore any starts with a 7,8 or 9 in it since we are already in the "wall" in that case 22 -> replace with 4 for 1 less digit 23-> replace with 6 for 1 less digit 24-> replace with an 8 for 1 less digit 26-> unable to find a fault in it 33-> replace with a 9 for 1 less digit 34-> using 26 gives a smaller number with the same product 36-> using 2 and a 9 gives a smaller number with the same product 44-> using 2 and a 8 gives a smaller number with the same product 66-> using 4 and a 9 gives a smaller number with the same product I started up a program (in java) about 10 minutes ago to check, so far it is has checked every candidate under 120 digits, but at least it scales by an order of N^2, while checking 2^x * 3^y * 7^z is scaling by an order of N^3. edit: Actually, I think your way may be more efficient if you don't have memory concerns, going from k=1000 to k=1001 gives you another 3 million-ish numbers to check, while going from 1600 to 1601 digits is another 9 million-ish numbers to check. You do have the downside in that you'd need to actually convert the x/y/z values into an actual number, but that's a small price to pay
This is a common problem on MBPs caused by the trackpad ribbon cable being too long, being bent to fit, and failing after time at the kinks. Replace the trackpad ribbon cable (£7 or so) and your trackpad and keyboard should work again. Did mine a few months ago. Good luck.
@@gartinmarrix8484 so practically for free, which is amazing since the problem isn't even apples fault. Obviously all the users don't know how to treat their hardware... Opening and closing a laptop multiple times is nothing short of careless.
This was pretty cool. I spent some time starting with digits and increasing them until the proverbial 2,5 pattern or a zero started showing up. Once you start getting a significant number of digits it really is difficult to not get a zero into any position simply due to the law of large numbers having some zeros somewhere.
Python 2 will not suddenly stop working in 2020. There are gazillion companies still using Python 2.x codebases, and they won't migrate everything to Python 3. Heck, forty-year old COBOL code is still used, millions and millions of lines of code.
Every time I watch these kind of videos, I find myself convincing myself that I would be so good at math if it would be taught to me this way back in school. But then I think, I am a potato when it comes to math. Fun to watch it anyway
Or RE trackpad on a Mac laptop... If it's an older machine, take the battery out and make sure it isn't swelling. My LithIon MacPro battery up and swelled so bad it crushed the trackball circuitry.
One of the things I would do if I were coding the search algorithm: Include a table of entries that have already been processed, a cache, which links the number being calculated to its persistence value Any time you complete a digit-multiplication, check if the result has already been cached, because if it has, you already know how many more steps are left in the chain Or, better yet: Organize digits by their size, since as they say, at the end of the video, any permutation of digits will give you the same result -- This will reduce the size of the cache because you won't have a bunch of permutations clogging it up So, if "n" is the input number, your program would have a rough flow of per(n): is n a one-digit number? TRUE: return 0 FALSE: proceed to next segment R = multiply_digits(n) -> sort(R) -> is (sorted) R cached? TRUE: retrieve cached value, add 1, this is the persistence value of n; save n and its persistence to cache FALSE: recurse, using R as the new n -> add 1 to returned persistence value of R to get n's persistence value This would be especially useful if you were iterating over numbers, as it would save time computing the same chain of numbers over and over again On the note of iteration: As they say in the video, avoid any combinations of digits that are known to create a 0; the first and easiest way to do this is to check if the number has both a 5 and an even number in its digits, in which case you automatically know that its persistence value is 2. If the number ALREADY has a 0 in it, you know its persistence value is 1. This check might end up consuming more processing power, though, it's hard to say.
@@MrUwU-dj7js Well obviously: no. Stack Overflow is the name of the site and it's written with two separate words, not in one word. Even the term stack overflow as is used in programming is written with two separate words. Just wanted to point that out, nothing more :)
What about using a different base? Let's say base 2; because those numbers only contain one and zero, the product will always be either one or zero. The max number of steps for base 2 is just 1. What is it for base three? 222 (26 in base 10) -> 22 (8 in base 10) -> 11 ( 4 in base 10) -> 1 Three steps is the longest I have been able to find so far. Is there a formula to find Max_Steps(base) = ?
If you compile the code, str(n) is faster because you're going to call str(n) later on line 6 so the compiler will optimize it to compute it once and keep the result. Of course you can get rid of str(n) completely by using "% 10" (i.e. modulus 10) and "/10" in a loop instead to calculate "result", which I'm guessing is even faster.
Fun fact, in my 12th grade math class many years ago, the teacher had on the whiteboard (from a previous class) a complete the number sequence puzzle and it was 77, 49, 36, 18, ___ and I managed to get it in seconds. I've told so many people that one and very few have solved it without me telling them. So when I read out loud '77 - 49 - 36 - 18' I was like HEYYYYY I RECOGNIZE THAT PATTERN!
Factor this number in prime decomposition and then get the possible numbers that make 77 be true in their multiplication (arranging them in any order).
Just to add, they can also remove any numbers with "1" in them for the smallest number search, since that number will always yield the same number of steps as the same number but with all the '1's removed, so any smallest number cannot have "1" in its digits
I paused the video to try the challenge and went for 799->567->210->0 I beat you Brady, but only just... EDIT: after watching the rest of the video I'm quite pleased with my 3 steps 😁.
@@rahimeozsoy4244 For select purposes, yes, just like python. "better" is subjective and intensely context sensitive. Please don't try to start flame wars.
Can't you just get a number that when you multiply all its digits makes the record holder? Wouldn't that just add 1 step? Or is the record holder impossible to multiply into?
my favourite part of the video was when Matt looked at 5x4 and knew it was 20, but took a second to check in his head because he can't afford to get that wrong on camera. I have the same experience whenever I have to give simple change when working the till lol
But then it wouldn't print the result for a single-digit number. Instead you should first do the non single-digit number and then only print the result once.
Matt: "You put in a 5, it's not gonna work" Me: really? Let's only use 3, 5, 7, 9 . I found some numbers with 3 steps, the smallest one should be 57 -> 35 -> 15 -> 5 Also working: 7753 (actually getting a 0 at the second step, but I love how 7 * 7 * 3 * 5 = 735), 7533 (oops, that's 3*3*3*3*3 * 31, nice!), 5553, 5333 . 4 steps: 35559 or 555333 -> 3375 -> 315 -> 15 ->5 . Anyone knows more?
These things become a big deal very fast. If you just post it anywhere online at all, particularly showing your work, the timestamp will show you were the first. I 100% doubt it, though. If you had the initiative to find the number, you would have the initiative to find out where to announce it.
@@HorzaPanda I'm currently tinkering in MATLAB and thinking about base 3. I realised that it's only worth looking at numbers that are all 2s as 0 is game over and 1 is just a waste of space. But I should really be writing my thesis (which is very not maths so I can't even say this is useful)! :P
You have to, because you're using each digit individually. Multiply the digits of 12345: 1 * 2 * 3 * 4 * 5 = 120 Well you can't do that if you don't discriminate the digits, can you? The next simplest way would be d=n%10; r=r*d; n=n/10 - - - -Oh - but you still need to loop... and be careful of n, lest it become 0... so you'd need to check the length each iteration... Far simpler to just check each digit individually - So the simple way coding it is to convert to a string, and take each character individually for its length.
@@jeffreymontgomery7516 As a computer scientist I invite you to believe me. String conversions are inappropriately costly and looping through integer divisions is exactly what you should use. Here is how, if you do not go for built-in functions like "reduce": def mult_digits(n): acc = n % 10 chopped = n // 10 while chopped > 0: acc *= chopped % 10 chopped //= 10 return acc
@@mickybadia - You misunderstand me... I agree. If I were making that as part of a computer program, to be used long-term, I would keep it a number. But for the example he gave, without getting too in-depth and needing to use more variables and perform extra testing on the value and ... It does what was wanted quickly and simply. He's using a language that needs interpreting, such as BASIC. Let's write it in Pascal, or C, and compile it... Hey - even better - let's not use something that high level, or needs an interpreter - let's write it in machine language and get it done even quicker! ....except then nobody watching would be able to understand what it's doing. For what it was meant to do, it does well.
He can do it Just with integer, but it would be harder. For exemple, you need to know how much digits d the number n has and then take the how Many mulples of 10^d has in n to take Just the first digit of the number and do it recursively to take the others one. Well... exhausting doing this and I dont know if it would be beter optmizied then the version that he did.
Hi, I might be underthinking this, but can't you start at the end and work backwards? For example, end on the single digit 2. Now 1x2 = 2, so the previous step can be 12. The one before that can be 34 as 3x4 = 12. Now, 34 is 2x17, which doesn't work, but all that means is that you replace 34 with 62 or anything else that equals 12. If none of those work, start adding 1s into the mix, for example 162 (which multiplies to 12) gives 992 as a starting point for the next one. Doing this, I'm sure a number with multiplicative persistence greater than 11 can be found in time; and there's no limit to the persistence if you're persistent enough.
Definitely seems promising. It's also possible to imagine this terminating - whenever you hit a number that has a prime factor other then 2,3,5,7, (i.e. bigger than 10) you lose. If a number's factors (allowing duplicates) can only be rearranged into losing numbers, it also loses. Do all numbers eventually lose, or is there an infinite chain of winners?
For each number, there are infinitely many options for the one above it, since we can have as many 1s as we like, anywhere in the number that we like. Surely, not all of them can be losers?
This is just a hunch, but I think the maximum number of steps is related to the base you choose. Since you're using base 10, maybe 11 is the most possible, because any more than that would necessarily end up in a 0 somewhere in the calculation. As Matt stated, getting the smallest number with the most steps is the goal. Also, any time you have 2 numbers that multiply together to get a number less than the base, they can be multiplied to get a smaller initial number with the same persistence. Since 1/2 base is also forbidden, this necessitates that at most, one digit can be less than 1/2 base, and the rest have to be greater than 1/2 base, up to base-1. I suspect you could get 13 or 14 steps in base 12.
Base 12 is likely to perform worse because, rather than just 5 and any even digit, 6 and any even digit or 4 and any digit that's a multiple of 3 will give a 0 as last digit in the next step. Base 11 and base 13 both avoid having any non-zero poison digits.
If you take the number 277,777,788,888,899 and rearrange the digits, as well as add an arbitrary number of 1s between the digits, as well as replacing some of the 8s with 2,2,2 or 2,4 and some of the 9s with 3,3 This new number still has a MP of 11. Surely computers will eventually find such a number which only has single digit prime factors (which are 2,3,5,7), well actually only 2 3 7, since 5 is only a factor if the last digit is 5 or 0. In other words, that said number can be expressed as 2^a × 3^b × 7^c And once you find such a number, those prime factors will represent the digits of a number with a MP of 12. So basically everyone is saying that computers till this day, have not been able to find such a number, only been able to prove a lower bound for the number of digits (233 digits) if such a number of MP of 12 exists. But theres no mathematical proof of whether a number of MP 12 exists or not? And its still an open problem?
Extra footage: ruclips.net/video/E4mrC39sEOQ/видео.html
Matt's new book is Humble Pi: bit.ly/Humble_Pi
More Matt videos on Numberphile: bit.ly/Matt_Videos
Can't you just ask what numbers give you 277777788888899 when multiplied, and then that number would have a persistense of 12 by default.
@@mrJety89 Or really you could look to multiply out to any permutation of the digits in 277777788888899. Maybe it's easier to end up with an even number like 997777778888882.
can you make a downloadable program for those codes?
interesting seeing python in a Numberphile video, as I just started learning python a couple days ago
@@ErixTheRed
Yeah, I was thinking abou that too. Something tells me that they've already tried both of those ideas.
"5 times 4 is … uhhhhh….20." The deeper into math that you get, the harder the easier things become sometimes. XDDD
preach
He is obviously joking
Nope
This is actually super accurate. U stop using numbers at some point when u do math, so u lose basic skills
@@mmeister8582 What do you mean you stop using numbers?
As a programmer, what gets me is that he went back and modified his code, but didn't remove the redundant print statement.
Definitely, I barely coded ever and haven't coded since the 80s, but even I spotted that that was the problem.
I knew he would simply remove 1 from the total number, because the code gave him +1 because of the entra last step.
It's a Parker Program: almost right.
What got me is print statements in the first place. Python2 is strong with him.
With a little bit of extra interfacing it could make logical sense. Like the final number gives an additional string "Final entry: X". But yeah, he said he "could just" remove it, he never said he would.
I love how Matt is willing to think and even make mistakes on camera. That kind of security in one’s intelligence probably makes someone really easy to get along with.
Never trust a perfect person
Except Matt isn't perfect, he makes tons of mistakes all the time, he's just secure that his mistakes don't reflect on his actual abilities. Otherwise we wouldn't have the brilliant "Parker X" banter that makes his channel and Numberphile's channel so entertaining.
@@efulmer8675 I think that was the point. A person who claims to be perfect is likely to be fake, and you can’t trust someone like that. A person who doesn’t mind getting caught making mistakes, because he never pretended to be perfect in the first place, is more likely to be someone you can trust.
Mathematician small talk: “So what numbers are you into these days?”
ahh uhm i personally like 12
@@qwertyuiop-cy5en i could go for an exponential today.
@@theterribleanimator1793 It's been the number 91 again for the last few weeks.
32 is a number I find inherently attractive for no apparent reason (other than being a power of 2).
I don’t find 16 as attractive but I do love it being the only number that can be described as x^y and y^x where x and y are differing positive integers (2 and 4, for the record).
Overall I just love powers of 2. Numbers like 12 and 24 are cute and all, but that factor of 3 feels like an imperfection.
3, take it or leave it
At first I thought that Matt was extremely brave to be so confident in his coding skills that he would be willing to do it live on the internet in front of an audience of nerds.
Then I realized that Matt is not ashamed to be caught making mistakes.
In truth, that's one of the things I admire most about him.
I entirely agree. I deeply admire and envy that about others, while I despise my own fear.
these numberphile regulars are really great.
He makes mistakes live on the internets for breckfist and doesn't give 2 Fs! XD
Mik he was talking about the individual digits being prime
Parker square
I love how “Suggested: The Parker Square” pops up in the corner when Matt says, “I’m always one to give it a go.”
2777788888899?
*uses calculator*
"2 × 7.... equals 14"
Literally me when I write an exam. Can't go wrong lol
Stuka don't forget to double check it!
It was me in engineering school... I was double checking simple multiplications because I was more stressed to get it wrong because of them than with the reasoning of the math!
He's a mathematician, he does it in a sequence, it doesn't matter how simple is an action. It's the order inside your mind. Because the moment he says "nah, I don't have to do it, it's obvious" he starts to make mistakes. From small to bigger and for math these are all the same. He's learned the hard way to be patient and correct. So it's now a reflex. =)
I had a weird habit of refusing to accept a calculator when I took math tests in junior high school in the late 90s.
My math teacher was always like "shouldn't you have a calculator, though?" and I said NO, and insisted on calculating everything by hand.
Not sure why, but maybe I wanted to prove to myself that I could do it without a calculator or something.
Well he wanted to multiply all the digits together, so he started with 2 x 7. Sure he could have typed 14 straight away and saved two button presses, but he didn't.
The base 2 version of this game is pretty sad
You can only use 1s
1
11
111
1111
11111
Now play the game backwards..
Both 1 and 0 are the BOOM 🤣🤣🤣
nowonmetube It‘s always 1 step whatever the number is
111111111111111-> 1*1*...*1=1
@@samodelkini yea i think they knew that thanks for clarifying tho
Matt: *writes code*
Matt: "That can't go wrong."
Me: *waits to see how that'll go wrong*
That's something we would have called a *Parker Code*
Every programmer writes perfect code while they are staring at it. Nothing can ever go wrong.
lot of people saying 327 isn't prime, I think he means the individual digits are prime
Yep, I think so.
@@numberphile nitrogen-infused coffee ☕
He said "Primes" (plural), so yes.
that was obvious to me immediately and I'm an idiot
It's a parker prime
"i'm always one to give it a go"
*parker square shows up in the i-card*
Just came here to see if anyone said the same thing.
timestamp?
12:53
I think Matt hit on an important bit when he mentioned the base-ten-ness of this problem. Consider that in base 2, you can never have a number that multiples to anything other than 1 or 0. Has anybody checked for patterns across bases?
i would think base 10 is definitely the reason for 11 being the maximum
probably a proof if you generalize a base 10 number as a sum of multiples of powers of 10 where you can manage to pull out a "10" after 10 steps and then you will get the 11th step always resulting in 0 and there being no way to continue
@@douggggggg I don't think it's that clean, quite, but I do think the attrition of possible branches gets too fast
111 - the number of the star-gate?
12:53
Matt be like "I'm always one to give it a go"
Top right corner suggestion: *Parker Square*
Best punchline ever
Richard Yan LOL
Yeah that was super passive aggressive xD
@@krystofdayne Nah, it's just cheeky banter.
Coincidence?
I paused this at 3:40 and thought "I could code this!" So I did. Then I came to the video...and watched him decided to code it.
You get points for "doing the work". Kudos!
Did exactly the same. Ended up without bugs.
5 points to Gryffindor
Cool i m not in my room or i would have also coded it
@@kryo2k lol
For some reason, I always like videos about really big numbers. It seems it’s more interesting for a large number to be special.. because it’s so specific!
Googology has entered the chat
> print(n), return "done"
> pastes code in the terminal
Inspiring.
you just can't comprehend his high IQ and thinking skills
he was using python 2 as well
He forgot to add "Hello World"
I know it's a joke. But let me educate others. Matt is a mathematician, not a coder. He is not expected to know the tiny nuances of coding. What matters is whether his logic is correct. So returning "DONE" is perfectly fine. Also, using Python2 is also fine. It's not like this code is some multi-client multi-threaded huge application which needs to maintained for a long time. It's just a simple script to crunch some numbers. No need to bring Python3 here as he is comfortable with Python2. But it's encouraged to shift to it. (I myself shifted to Python3 a month back)
Sumitro Bhaumik how is returning done fine? It makes no sense
I wrote a small C program to brute-force output the numbers.
I think it's correct, if I understood the problem correctly.
It should go through all natural numbers through 18446744073709551615 (the maximum size of an 8-byte unsigned long long in C).
It's been running for a few hours now and I have 1-10.
Terminal output:
10-> 0
Number 10 has score: 1
25-> 10-> 0
Number 25 has score: 2
39-> 27-> 14-> 4
Number 39 has score: 3
77-> 49-> 36-> 18-> 8
Number 77 has score: 4
679-> 378-> 168-> 48-> 32-> 6
Number 679 has score: 5
6788-> 2688-> 768-> 336-> 54-> 20-> 0
Number 6788 has score: 6
68889-> 27648-> 2688-> 768-> 336-> 54-> 20-> 0
Number 68889 has score: 7
2677889-> 338688-> 27648-> 2688-> 768-> 336-> 54-> 20-> 0
Number 2677889 has score: 8
26888999-> 4478976-> 338688-> 27648-> 2688-> 768-> 336-> 54-> 20-> 0
Number 26888999 has score: 9
3778888999-> 438939648-> 4478976-> 338688-> 27648-> 2688-> 768-> 336-> 54-> 20-> 0
Number 3778888999 has score: 10
You can make it much bigger, if the original number is a String, and you just multiply the digits.
@@roguechlnchllla6564 Even better, notice how the result of the multiplication is always of the form 2^a × 3^b × 7^c, since you're just multiplying lots of digits together. The 4's, 8's and 9's can be broken down into multiple 2's or 3's, and the 5 never appears with any 2's without instantly giving a multiple of 10 and therefore a zero at the start.
Now, the problem just boils down to finding three integers, a, b and c, such that
2^a × 3^b × 7^c
is a number with a multiplication persistence of 11.
I have written a simple one in python . Upto 6-7 its fast, but after that the time it takes grows exponentially
i got them all to the last one as well
@@defectus1769
You beat me to it. I too was thinking about that.
I also thought of reverse engineering the next number.
Ex. 2, 12, 34, it ends at 34, since it needs 2*17. 17 is a 2 digit number and a prime.
Ex. 2, 12, 43.
Ex. 2, 12, 223 or 232 or 322. Some of which can go further.
Ex. 2, 21, 37.
Ex. 2, 21, 73.
I tried 6, and got myself a little tree of options to start from. They all end with 6. But I don't know how to write a program that looks for reversed engineer all options.
If someone makes that, you could use that 11 parts number as a start. All possible answers would roll out. And perhaps even more.
Since you are right about 2, 3 and 7. You could easily weed wrong answers out for the next step.
The reverse approach might be better - instead of looking for numbers that result in most steps, look for steps and reconstruct the number that should give these steps. For instance if the last step is 20 then we should go for number whose digits are divisors of 20, like 225 or 45, and so on
Clever
9:40 - u have nice hairstyle on your shadow)))
Egor Strakhov 😂
He's trying to take over the tri-state area
Freaky Fred vibes
The Weeknd
Goku hairstyle
If you add 90, or a 3.24e-11% you get 277777788888989, which has the same persistence, but is also prime.
woah
It’s higher than the original, and just has the same sequence of numbers. Bit underwhelming.
It's literally the same sequence of numbers lol, just in a slightly different order.
If you add 900 to yours, it also works (or 990, 9990, 99990....)
any permutation of these digits have the exact same persistence and it's pretty obvious. changing two digits around and calling it adding 90 is a little weird
I loved watching him code along with showing the math problem. Please do this more often!
9:42 Matt with a Mohawk does not look right...
That's a buzz cut, not a Mohawk.
@@RonJohn63 Look at the shadow on the door.
@@WrenAkula I choose to not understand!
Matt is secretly an anime protagonist with a fancy transformation sequence.
me: "Matt with a moh.... ?" _spots the joke_ ".... omg..." _facepalm_
0:14
"277,777,788,888,899" - written on the paper
"277,777,778,888,899" - said by Matt
Don't think we wouldn't find a Parker Square in this one too, mister Matt!
I had high hopes... and then we got 15 seconds into the video.
Someone explain?
The Parker persistence of "277,777,778,888,899" is still 11.
PARKER SQUAREEEAAAAAA
@@nicholas2113 broke the record of smallest number fulfilling said property
12:52 "I'm always one to give it a go"
(i) symbol recommends The Parker Square
*savage*
I love that as Matt says "I'm always one to give it a go" a link to the parker square video comes up in the top corner
I paused at 1:50 and gave it a try. Went with 999
so:
999->729->126->12->2
4 steps, not bad.
I tried 3927 and got five (378, 168, 48, 32, 6) steps.
@MilesTisserand , if you mean any number has an equal chance of being chosen, I have a feeling the odds would lean heavily to 1 and 2 steps because of how often 0 comes up. It would be interesting to see the odds if you automatically exclude certain numbers that you know will drag down the average (like any that has 0 from the start).
@@Ascordigan Then 679 (2x3) would have the same steps. Now you know after watching the rest of the video, that the aim is find the lowest number.
@MilesTisserand Interesting idea. If I wasn't a busy undergrad, I would definitely try it out and graph the probability distribution. It'd be crazy to find a hidden poisson or something haha
I got six steps with 888888888
love the shadow of his head at 9:41 lol
I liked the coding part! More of that yes yes!!
Can I learn these Cscience things all by myself?
@@randomdude9135 yea, fortunately there are tons of programming lessons on the internet
Just say no to python.
@@anthonyhoffmann why so?
How about subscribing to computerphile?
Hey mate, after watching this video I have spent hours upon hours trying to figure out a formula.
I haven't come up with an exact formula, however, I have noted that if you start *backwards* you can go around in circles for ages.
Take the single digit number 6, for example. Now 6 has 4 factors, 1-6 and 2-3.
With this, we can make 4 number, from the 4 factors... 16 23 32 61
We know two of these are primes so they are irrelevant, bye bye 23 and 61
now, with 16 and 32, one is the double of the other - ill come back to this.
So, like before, 16 has 3/single digit factors, 2-8,4-4
from this, we can make 28, 44, 44:) and 82
We can continue this sequence until all our remaining factors and their combinations only have primes as factors, and then this final number we can put into the program, or calculate yourself and figure out the steps, coming back to the final figure/our figure, 6.
I'll leave you with one last thing. 23 earlier, was a prime number and we could not continue it in the sequence, however; 2*3=6 but so does 1*2*3, and 1*1*2*1*3*1*1
This is the difficulty I am facing with my current formula, as there is nothing against placing 1s into a prime number solution or just any solution in general and then continue on from there-doing the same thing over and over again. It does just mean one thing - your final solution will be longer than the current record, however, we can break the record and set a new one.
I'll let you break the record though, is too tired now :)
this dude wrote all of that only to get 3 likes
@@onehotseat You... missed the point.
Ethan started on a random single-digit number, and created a sequence that would go to it (28 -> 16 -> 6) by factoring it. It's transparent how this method works - you find single-digit factors of a number, and string them together to create a new number (factors of 16 are 1,16, 2,8, 4,4, so 28 and 44 both go to 16 which goes to 6). Using the same method we continue - single-digit factors of 28 are 4,7.
47 is prime, and 74 has no single-digit factors. However, 4 is 2x2, so we also have 227, 272, 722. And none of them have single-digit factors, so we can't continue this sequence past length 3 (47 -> 28 -> 16 -> 6)
Adding 1 to the _starting_ number is pointless, but we don't _have_ a starting number. However, a 1 in an intermediate step is not harmful, and only expands the number of possibilities for reversing a sequence. We can't continue the sequence from 23 because 23 is prime - nothing will multiply to it. However, by inserting 1s, we could end up with a number that contains only a 2, a 3, and a ton of 1s, with single-digit factors. From these, we can construct a number that multiplies the number we found with 2, 3, and 1s, and that number will multiply to 16.
At the extreme, there's the number from the video. That one ends at 0, and there's infinitely many numbers that can lead to 0. Picking one at random, 20, gives us more factors to play with. 20 factors to 4,5, giving us 225, 252, 522, 45, and 54. Continuing in this fashion, we get to 438939648, which has factors 2^12, 3^7, 7^2, all single-digit. However, you may notice that there's no way to arrange and combine those factors that gives us another number with single-digit factors, _unless_ if you slot in a 1 and end up with the number 4996238671872. That number _does_ have single-digit factors - a 2, 6 7s, 6 8s, and 4 3s.
I'm just not sure whether this number theory method is faster than brute forcing. There's already a plethora of ways to rearrange and combine factors of large numbers, and you have to find the ones with single-digit factors. You then have to account for the fact that every combination could have any number of 1s put into it, in any position, and factorise those too, all of which sounds computationally more expensive than just multiplying down the digits of most numbers from 1 to 10^320
Toying with this for a while, I think I found a way to get to higher numbers. If you check the steps on each number, they always repeat the lower steps. Like, 277777788888899, results first is 4996238671872, then later is 438939648. While the one beneath it, 3778888999, the next step is 438939648. This could mean that a way to find the 12th number, maybe the second step of it is the first step of the 11th one. Not a rule, since the smaller ones seem to break it, but bigger ones a very consistent.
five years later this is hands down my favourite thumbnail on this channel
wise word: never code in front of class
matt: hold my square
Honestly it's no more risky than doing mathematics in front of a class. Everyone makes mistakes at the board.
I always coded in front of my class. Hours and hours per day
Matt, we love you but please it's time to upgrade to Python 3.
He's got 9 *whole* months before python2 is EOL ;-) [Yes! *stop* using python2; maybe try golang?]
I came into the comments to say this!
Lol
What's the difference though?
Or maybe use a decent programming language.
When you became so advanced, easy things are the hard things
Soon in comments, new world record with number that has 15 steps and Matt playing it on piano
Play it on today's google doodle
Soon on 4chan, someone asks a question about an anime and someone else mathematically analyzes it to find a 15 -step number.
It does indeed seem like 11 is the limit. I calculated up to 1500 digits and there aren't any solutions. Similarly, I computed limits for bases 2-10,
Base 2: 1
Base 3: 3
Base 4: 3
Base 5: 5
Base 6: 5
Base 7: 8
Base 8: 6
Base 9: 7
Base 10: 11
They all reach this "cliff" after which there's no answers as far as I computed, so it's probably fair to conjecture they all reach limits.
@@ehsan_kia Base 11: 13 23777777777777777778888888999999aaaaaaaaaaaaaaaaaaaa
@@ehsan_kia Any chance you could do this for bases up to 36? I have a conjecture I'd like to test and I cannot code. :(
While the Parker Square is always amusing, this video leads me to a nice new constant: Brady's Number = 2
Vihart already did that
I love that thumbnail. The way he looks, with such fascination, at the number 277777788888899 as if it's the most attractive thing in the world 🤣🤣🤣
Tutorial on how to convert your computer into a bonfire.
Step 1. Run complex problems that nobody has answered!
Step 2. Wait
Step 3. Wait
...
Step 9. Wait
Step A. Wait
Step B. Wait
...
Step FC. Wait
Step FD. Wait
Step FE. Wait
Step FF. Wait
Step 100. Boom! You got an answer and a fire!
Are you running a 90s processor without a cooler? Lol
Made my day.
@@whatisthis2809
Brilliant .
You need a string of digits that multiply out to 277777788888899.
...
Oh, bummer, all of its prime factors are greater than 7.
It's not just a string of digits that multiple out to that number, but any combination of the digits in that number.
and you can add as many 1s as you want anywhere in the number
True. That would potentially make the search easier.
@@kevinr.9733 I agree with that, but couldn't it also exponentially increase the number of numbers that would have to be checked?
@@Stefan-ls3pb Oh i just realised :( you destroyed my life
Matt could've fixed the duplicated single digit final value by removing line 3. that's my only contribution to this video
I noticed that, too.
I think it would be important to consider other base counting systems. Ten is a weird number, so start with smaller (or maybe larger) bases to see what might be going on underneath all of it. Certainly, larger bases will have larger persistence measures because a randomly chosen number will have a smaller chance of having a zero in the product of its digits.
I discovered this trick when I was bored a school and started to multiply persistently numbers in the calculator. I always found it a very intriguing trick, didn't know it was actually a mathematical curiosity
Judging from the videos in this channel, anything and everything is a mathematical curiosity when the simplest problems can be scaled up, and up, and up, until it isn't trivial anymore. There are quite a few other videos like this where the game is pretty simple, but then when you continue to play it, it gets more difficult. Then they whip out the brown paper
So rightly, the Guarracino Number of 277777788888899 is 11... etc... 😊
This video gives the known lower bound for P(n) = 12 as n > 10^233. The latest result is from Tim Peters (Sept 2023): " A long computer run checked N=30000, a bit over 36*10^12 candidates. The smallest candidate with more than 30000 digits is > 2.67*10^30000, which is the smallest remaining possibility for a(12)"
Your shadow at 9:46 is epic - you look like Julius Caesar. :-)
Nah, no knives
@@bijeshshrestha2450 et tu, bijeshsrestha, et tu
I really like these types of videos that combine coding and number stuff
At 12:51
Matt: "I'm always one to give it a go"
Numberphile suggested video: "The Parker Square"
You can reduce the sample spaces even further. You can eliminate all numbers with a 1 in it (since it has no effect on the result), and can eliminate all numbers that start 34.... (you can start 26...) or 36..... (similar to 2....9).
edit: Also just realised it could never have more than 1 six in it, as two sixes allows 4....9 for a smaller number. And it cannot start 44 since it allows 2....8...
You can also calculate the thing backwards (i.e. start from the smallest number, then work your way upwards), which would probably make the thing much faster.
@@Luxalpa I thought some more about it, and I think that any numbers beating it will have to start with 2,3,4,6,7,8,9 or 26 before we hit the wall of 789s (and obviously kept in digital order). If we cheat and count 26 as one digit for the purpose of recording length (obviously we multiply by 12 still), then we only need to check 210680 numbers to check all numbers of length 230, and even that is double counting some numbers.
@@manudude02 I would like to know how you got to that idea.
I myself found a way to get up to length 1600 with fairly realistic effort (without requiring a super computer that is). Basically, the realization is that all chain numbers (i.e. all numbers except for the starter) must be N = 2^x * 3^y * 7^z. So you just need to go through all the x, y and z, find a number that doesn't contain 0 or 5, and then see if the multiplied digits result in any other of those numbers. With x, y, z < 1000 you only need to check 1 billion numbers. Storing them all on a hard disk would take some 1.6 TB of storage, however I think if you exclude all the numbers with 0 and 5 in it, the storage requirement will probably be much lower (I'll have to double check my math on that one or just learn Python and give it a try).
I tried to make it all the way around, the program ask the number of steps and then calculate all the numbers... didn't succeed...
@@Luxalpa Obviously we are not going to have zeros or one and removing 5s (not checked, but I doubt you can avoid even numbers for long), but look at every 2-digit other case. I ignore any starts with a 7,8 or 9 in it since we are already in the "wall" in that case
22 -> replace with 4 for 1 less digit
23-> replace with 6 for 1 less digit
24-> replace with an 8 for 1 less digit
26-> unable to find a fault in it
33-> replace with a 9 for 1 less digit
34-> using 26 gives a smaller number with the same product
36-> using 2 and a 9 gives a smaller number with the same product
44-> using 2 and a 8 gives a smaller number with the same product
66-> using 4 and a 9 gives a smaller number with the same product
I started up a program (in java) about 10 minutes ago to check, so far it is has checked every candidate under 120 digits, but at least it scales by an order of N^2, while checking 2^x * 3^y * 7^z is scaling by an order of N^3.
edit: Actually, I think your way may be more efficient if you don't have memory concerns, going from k=1000 to k=1001 gives you another 3 million-ish numbers to check, while going from 1600 to 1601 digits is another 9 million-ish numbers to check. You do have the downside in that you'd need to actually convert the x/y/z values into an actual number, but that's a small price to pay
This is a common problem on MBPs caused by the trackpad ribbon cable being too long, being bent to fit, and failing after time at the kinks. Replace the trackpad ribbon cable (£7 or so) and your trackpad and keyboard should work again. Did mine a few months ago. Good luck.
Julian Pinn Thanks! I plan to take a screwdriver to it soon.
Did it myself recently and I was surprised at how easy it really was.
Just go to the genius bar and get them to fix it practically for free (probably less than 2000 pounds at least)
@@Zolbat It's 7 pounds for a cable, over 100 for the genius bar.
@@gartinmarrix8484 so practically for free, which is amazing since the problem isn't even apples fault. Obviously all the users don't know how to treat their hardware... Opening and closing a laptop multiple times is nothing short of careless.
This was pretty cool. I spent some time starting with digits and increasing them until the proverbial 2,5 pattern or a zero started showing up. Once you start getting a significant number of digits it really is difficult to not get a zero into any position simply due to the law of large numbers having some zeros somewhere.
“You never wanna have two threes, cause that could be a nine”
Python 2? In 2019? Well, I suppose you still have 288 days left to enjoy your habits.
Python 2 will not suddenly stop working in 2020. There are gazillion companies still using Python 2.x codebases, and they won't migrate everything to Python 3. Heck, forty-year old COBOL code is still used, millions and millions of lines of code.
@@PaulaJBean You're right. Also, Pluto is a planet.
@@Art-fn7ns well, it is, a dwarf one.
@@Art-fn7ns Now this is important!
@@leandrometfan smaller than our moon? it's an ateroid, not a dwarf planet. its diameter is smaller than the width of australia cmon
12:52 "I'm always one to give it a go"
"Suggested: Parker Square"
Numberphile you did it again
Every time I watch these kind of videos, I find myself convincing myself that I would be so good at math if it would be taught to me this way back in school. But then I think, I am a potato when it comes to math. Fun to watch it anyway
Nothing wrong with giving it a go
4:00 the trackpad having problems along with the keyboard is a known mac issue from what i can tell watching louis rossmann
Yeah it is. It happened to my computer. The trackpad cable just needs to be replaced. You can get one off amazon for $10. Super easy fix
or he hit the shortcut to turn them off and hasn't realized it yet
Or RE trackpad on a Mac laptop... If it's an older machine, take the battery out and make sure it isn't swelling. My LithIon MacPro battery up and swelled so bad it crushed the trackball circuitry.
I just came here from his video 😂
One of the things I would do if I were coding the search algorithm: Include a table of entries that have already been processed, a cache, which links the number being calculated to its persistence value
Any time you complete a digit-multiplication, check if the result has already been cached, because if it has, you already know how many more steps are left in the chain
Or, better yet: Organize digits by their size, since as they say, at the end of the video, any permutation of digits will give you the same result -- This will reduce the size of the cache because you won't have a bunch of permutations clogging it up
So, if "n" is the input number, your program would have a rough flow of
per(n):
is n a one-digit number?
TRUE: return 0
FALSE: proceed to next segment
R = multiply_digits(n) -> sort(R) -> is (sorted) R cached?
TRUE: retrieve cached value, add 1, this is the persistence value of n; save n and its persistence to cache
FALSE: recurse, using R as the new n -> add 1 to returned persistence value of R to get n's persistence value
This would be especially useful if you were iterating over numbers, as it would save time computing the same chain of numbers over and over again
On the note of iteration: As they say in the video, avoid any combinations of digits that are known to create a 0; the first and easiest way to do this is to check if the number has both a 5 and an even number in its digits, in which case you automatically know that its persistence value is 2. If the number ALREADY has a 0 in it, you know its persistence value is 1. This check might end up consuming more processing power, though, it's hard to say.
He didn't use stackoverflow? Matt is a genius!
You misspelled Stack Overflow.
@@Attlanttizz you can't put whitespaces in URLs. Even the logo is stack*overflow* as one word:.
@@wWvwvVUse your favorite search engine, search for Stack Overflow, you'll see.
@@Attlanttizz If this was a matter of you being able to find your page on Google, the original comment was already fine.
@@MrUwU-dj7js Well obviously: no. Stack Overflow is the name of the site and it's written with two separate words, not in one word. Even the term stack overflow as is used in programming is written with two separate words. Just wanted to point that out, nothing more :)
What about using a different base?
Let's say base 2; because those numbers only contain one and zero, the product will always be either one or zero. The max number of steps for base 2 is just 1.
What is it for base three?
222 (26 in base 10) -> 22 (8 in base 10) -> 11 ( 4 in base 10) -> 1
Three steps is the longest I have been able to find so far.
Is there a formula to find Max_Steps(base) = ?
Shouldn't 22tri be 8dec, since it's 6+2 and 2*2*2? Likewise, 11tri is 4dec.
@@JimBob4233 Yes, I did edit my comment to correct that.
that is the world's best thumbnail
Math and Coding in one video.
This is a good start to my day.
if len(str(n)) == 1 is for nerds -> if n < 10 is for engineering
pretty simple
That's definitely less stress on your processor. There are times I wish I knew languages other than Perl.
len(str(n)) is what's directly defined ("if there's only one digit left"). n
If you compile the code, str(n) is faster because you're going to call str(n) later on line 6 so the compiler will optimize it to compute it once and keep the result. Of course you can get rid of str(n) completely by using "% 10" (i.e. modulus 10) and "/10" in a loop instead to calculate "result", which I'm guessing is even faster.
Mattia Conti hes a mathematician. cannot do common sense. only complicated abstract concepts.
Every Numberphile thumbnail is a work of art, but some, like this one, are even better art than the rest
I don't know why, but I love plucky little 77.
77->49->36->18->8
The longest run for a two-digit number.
Fun fact, in my 12th grade math class many years ago, the teacher had on the whiteboard (from a previous class) a complete the number sequence puzzle and it was 77, 49, 36, 18, ___ and I managed to get it in seconds. I've told so many people that one and very few have solved it without me telling them. So when I read out loud '77 - 49 - 36 - 18' I was like HEYYYYY I RECOGNIZE THAT PATTERN!
It seems like it never wants to end
@@MusicalMatthew well, okay, but it doesn't seem it was so difficult😂
@@gabrieleporru4443 It never seems difficult when you know the answer lol
Factor this number in prime decomposition and then get the possible numbers that make 77 be true in their multiplication (arranging them in any order).
Just get rid of 'print n' if you don't want final result showing up twice.
That throws up an error if the original number is only 1 digit, but that can easily be ignored or corrected
no no keep it! this way it is Parker code.
the method is recursive, so you only need one single print(n) on the first line
Just to add, they can also remove any numbers with "1" in them for the smallest number search, since that number will always yield the same number of steps as the same number but with all the '1's removed, so any smallest number cannot have "1" in its digits
Dr. Brady, we need more live coding in Numberphile videos.
I paused the video to try the challenge and went for 799->567->210->0
I beat you Brady, but only just...
EDIT: after watching the rest of the video I'm quite pleased with my 3 steps 😁.
Tha's atually 4. He counts the zero when he counts the 11 steps
@@Anders1314 I counted the 0 as well. I didn't count the 799 I started with though.
@@MEver316 You're right. My mistake
Mine was 7879
Nice
The "print n" hurts my eyes
This is a 2019 video, you were supposed to use python 3 :(
Also needs moar reduce()
@@BlueRaja iterative programming is easier for most newbies to follow along with, I have a suspicion that Matt would reduce x,y: x*y on his own.
Lua is better
@@rahimeozsoy4244 For select purposes, yes, just like python. "better" is subjective and intensely context sensitive. Please don't try to start flame wars.
@@crashmatrix This is not programming, this is coding. Programming requires skill.
As a python programmer, I appreciate the demonstration
As a python programmer, i dont appreciate the continuation of python 2.
len(str(n))==1 instead of just n
print n
return "DONE"
How can appreciate this?
pithon, ok
@@kwinzman I know right completely unnecessary use of the length function. But its alright since he is not a programmer
When the calculator is tilted to Landscape you know it's serious math
I lost it when the Parker Square video popped up in the suggestion card when he said "I'm always one to give it a go."
I'm a simple man. I see a thumbnail of Matt Parker possesed by the ghost of Hannibal Lecter and I click on it.
Cristian Baldi dudes aging fast
Can't you just get a number that when you multiply all its digits makes the record holder? Wouldn't that just add 1 step? Or is the record holder impossible to multiply into?
fact, but what string of digits multiplied will get you that number.... figure that one out
@@dhycee8215 thats the problem lul
Loving Matt's shadow at 9:42 :)
Interesting...
Very lol
What happened to the calculation of the width of the 3-sided coin?
anoderone comments on that vid say they probably fell down the hole of "what counts as a flip"
I just learned more about coding in this simple video than i ever had before
Never a Matt Parker video without a Parker blooper within 20 seconds of the video starting.
It's all marketing for Matt's new book about math mistakes... Available now: bit.ly/Humble_Pi
Numberphile Can confirm. All mistakes (for the rest of my career) are now officially deliberate.
@@standupmaths You could say it's a Parker Mistake
my favourite part of the video was when Matt looked at 5x4 and knew it was 20, but took a second to check in his head because he can't afford to get that wrong on camera. I have the same experience whenever I have to give simple change when working the till lol
It's been more than a year since this experiment. Has the record of 11 steps been beaten?
I found one, but the RUclips comment section is too small to contain it.
@@sobeeaton5693 isn't Numberphile gonna do a vid on it? :P
@@sobeeaton5693 Nice reference haha
@@sobeeaton5693 Get Outta here Fermat!
I love how he always has to put in the Parker Square.
Matt will never live it down...
more live coding with matt!!! more live coding with matt!!!!
Parker Python?
Every time I see this thumbnail it cracks me up. Matt Parker is a treasure
while loops: Let's just keep running till you say to stop
Matt Parker: 6:19
Also Matt Parker: *mic drop*
For the deduplicating of the single-digit: removing the "print n" on line 3 would have done the trick...
But then it wouldn't print the result for a single-digit number. Instead you should first do the non single-digit number and then only print the result once.
Matt: "You put in a 5, it's not gonna work"
Me: really? Let's only use 3, 5, 7, 9
.
I found some numbers with 3 steps, the smallest one should be 57 -> 35 -> 15 -> 5
Also working: 7753 (actually getting a 0 at the second step, but I love how 7 * 7 * 3 * 5 = 735), 7533 (oops, that's 3*3*3*3*3 * 31, nice!), 5553, 5333
.
4 steps: 35559 or 555333 -> 3375 -> 315 -> 15 ->5
.
Anyone knows more?
4 steps: 557
.
5 steps:
5579 / 75533
1575
175
35
15
5
7:14 you don't need to have print(n) in line 3 where you have the check.... it already prints that result for you
Where can i send my 12 step number to get verificated as record holder?
@TheBibliophile 0 you will see it, if i get the official record holder...
How did it go? Where can i see it? :D
Did you send it yet? Im curious
@@Gebes just say it right here
And of course, email Numberphile.
These things become a big deal very fast. If you just post it anywhere online at all, particularly showing your work, the timestamp will show you were the first. I 100% doubt it, though. If you had the initiative to find the number, you would have the initiative to find out where to announce it.
"this is so much quicker!" said the inventor of calculator
On my second attempt, I got 12 steps using 3,277,799,229,998,778
That's 2 steps. 1,524,382,530,048
0
According to Apple. You must be one of the "small percentage" of people having issues with the butterfly keyboard.. lol
This is a 2013-2015 macbook: no touchbar, no giganric trackpad, displayport/thunderbold output and not space gray
Idiotic comment is idiotic.
According to your mind..
@@DecontructRecreate "Idiotic comment is idiotic" This person has apple iq
4:42 Thats a weird way if saying
if(n < 10)
Matt: I'm always one to give it a go.
*Suggested: The Parker Square*
Fun fact, multiplicative persistence in base 2 is always 1.
Good that u told...*as if we wouldn't have known*🐮
I wonder if there's a nice logical way to work up through the bases to figure out why 11 may be the limit in base 10
Yooooo
andymcl92 that’s a cool idea. Can’t be that hard to code
@@HorzaPanda I'm currently tinkering in MATLAB and thinking about base 3. I realised that it's only worth looking at numbers that are all 2s as 0 is game over and 1 is just a waste of space.
But I should really be writing my thesis (which is very not maths so I can't even say this is useful)! :P
I love these videos because they inspire me to code programs that do this myself. Eventhough I’m watching this 4 years later it was a great video
You can tell the guy is crazy for real as he does string conversions for integer arithmetic.
You have to, because you're using each digit individually.
Multiply the digits of 12345: 1 * 2 * 3 * 4 * 5 = 120
Well you can't do that if you don't discriminate the digits, can you? The next simplest way would be d=n%10; r=r*d; n=n/10 - - - -Oh - but you still need to loop... and be careful of n, lest it become 0... so you'd need to check the length each iteration...
Far simpler to just check each digit individually - So the simple way coding it is to convert to a string, and take each character individually for its length.
@@jeffreymontgomery7516 As a computer scientist I invite you to believe me. String conversions are inappropriately costly and looping through integer divisions is exactly what you should use. Here is how, if you do not go for built-in functions like "reduce":
def mult_digits(n):
acc = n % 10
chopped = n // 10
while chopped > 0:
acc *= chopped % 10
chopped //= 10
return acc
@@mickybadia - You misunderstand me... I agree.
If I were making that as part of a computer program, to be used long-term, I would keep it a number.
But for the example he gave, without getting too in-depth and needing to use more variables and perform extra testing on the value and ...
It does what was wanted quickly and simply.
He's using a language that needs interpreting, such as BASIC. Let's write it in Pascal, or C, and compile it...
Hey - even better - let's not use something that high level, or needs an interpreter - let's write it in machine language and get it done even quicker!
....except then nobody watching would be able to understand what it's doing.
For what it was meant to do, it does well.
He can do it Just with integer, but it would be harder. For exemple, you need to know how much digits d the number n has and then take the how Many mulples of 10^d has in n to take Just the first digit of the number and do it recursively to take the others one. Well... exhausting doing this and I dont know if it would be beter optmizied then the version that he did.
In the second line it would have been far easier to keep it as an integer. Instead of
if len(str(n))==1:
he could just have used
if n
Hi, I might be underthinking this, but can't you start at the end and work backwards?
For example, end on the single digit 2. Now 1x2 = 2, so the previous step can be 12. The one before that can be 34 as 3x4 = 12.
Now, 34 is 2x17, which doesn't work, but all that means is that you replace 34 with 62 or anything else that equals 12. If none of those work, start adding 1s into the mix, for example 162 (which multiplies to 12) gives 992 as a starting point for the next one.
Doing this, I'm sure a number with multiplicative persistence greater than 11 can be found in time; and there's no limit to the persistence if you're persistent enough.
Definitely seems promising. It's also possible to imagine this terminating - whenever you hit a number that has a prime factor other then 2,3,5,7, (i.e. bigger than 10) you lose. If a number's factors (allowing duplicates) can only be rearranged into losing numbers, it also loses. Do all numbers eventually lose, or is there an infinite chain of winners?
So basically we try to construct numbers with a bigger persistence by working up like this?
For each number, there are infinitely many options for the one above it, since we can have as many 1s as we like, anywhere in the number that we like. Surely, not all of them can be losers?
He does all that (6:45), but he struggles with 5x4.
7:30 - ♫ ♫ I will refactor this later! ♫ ♫
Daniel shiffman FTW
// 15-05-2013 MP: Temporary solution, fix later.
This is just a hunch, but I think the maximum number of steps is related to the base you choose. Since you're using base 10, maybe 11 is the most possible, because any more than that would necessarily end up in a 0 somewhere in the calculation.
As Matt stated, getting the smallest number with the most steps is the goal. Also, any time you have 2 numbers that multiply together to get a number less than the base, they can be multiplied to get a smaller initial number with the same persistence. Since 1/2 base is also forbidden, this necessitates that at most, one digit can be less than 1/2 base, and the rest have to be greater than 1/2 base, up to base-1.
I suspect you could get 13 or 14 steps in base 12.
Base 12 is likely to perform worse because, rather than just 5 and any even digit, 6 and any even digit or 4 and any digit that's a multiple of 3 will give a 0 as last digit in the next step. Base 11 and base 13 both avoid having any non-zero poison digits.
If you take the number 277,777,788,888,899 and rearrange the digits, as well as add an arbitrary number of 1s between the digits, as well as replacing some of the 8s with 2,2,2 or 2,4 and some of the 9s with 3,3
This new number still has a MP of 11.
Surely computers will eventually find such a number which only has single digit prime factors (which are 2,3,5,7), well actually only 2 3 7, since 5 is only a factor if the last digit is 5 or 0.
In other words, that said number can be expressed as 2^a × 3^b × 7^c
And once you find such a number, those prime factors will represent the digits of a number with a MP of 12.
So basically everyone is saying that computers till this day, have not been able to find such a number, only been able to prove a lower bound for the number of digits (233 digits) if such a number of MP of 12 exists.
But theres no mathematical proof of whether a number of MP 12 exists or not? And its still an open problem?
Now I know what this thumbnail reminds me of.
*It’s treason, then*
Darth mathematicus