2
$\begingroup$

I was checking the following number theory excercise:

The number $1634$ has an interesting property. This 4-digit number satisfies that the sum of the fourth powers of its digits gives the same number. That is, $1 ^ 4 + 6 ^ 4 + 3 ^ 4 + 4 ^ 4$ $=$ $1634$. How many integers of $ m $ digits are equal to the sum of the $ m $ -th powers of their digits in the interval $[1, ..., 10 ^ 7]$? What is the largest of those complies with said property in the same interval?

I've found using some research that the numbers under the power of four are:

$$1634 = 1^4 + 6^4 + 3^4 + 4^4$$ $$8208 = 8^4 + 2^4 + 0^4 + 8^4$$ $$9474 = 9^4 + 4^4 + 7^4 + 4^4$$

As $1 = 1^4$ is not a sum it is not included.

So my biggest number is $9474$ in this moment.

Is there a bigger number than that or other number that that meets the condition of the statement in the interval provided?

Any help will be really appreciated

$\endgroup$
2
  • $\begingroup$ See OEIS sequence A005188 and links there. $\endgroup$ – Robert Israel Jan 21 '19 at 16:30
  • $\begingroup$ Note that for any given exponent you only need to check up to some number of digits. For exponent $k$ and $m$ digits the greatest the sum can be is $m9^k$, but an $m$ digit number is at least $10^{m-1}$. Roughly when $m \gt k$ you have $10^{m-1} \gt m9^k$ and you are done with that $k$. $\endgroup$ – Ross Millikan Jan 21 '19 at 16:51
1
$\begingroup$

Use the following Java code:

public class Test {
    public static final long LIMIT = 10_000_000L;

    public static int len(long number) {
        return String.valueOf(number).length();
    }

    public static long pow(long number, int exp) {
        long prod = 1;
        for(int i = 0; i < exp; i++) {
            prod *= number;
        }
        return prod;
    }

    public static long sum(long number) {
        int m = len(number);
        long s = 0;
        while(number > 0) {
            long digit = number % 10;
            s += pow(digit, m);
            number /= 10;
        }
        return s;
    }

    public static void main(String[] args) {
        for(long num = 10; num < LIMIT; num++) {
            if(num == sum(num)) {
                System.out.println(num);
            }
        }
    } 
}

Output:

153
370
371
407
1634
8208
9474
54748
92727
93084
548834
1741725
4210818
9800817
9926315

Adjust LIMIT and you can proceed even further. Up to $10^9$:

24678050
24678051
88593477
146511208
472335975
534494836
912985153
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.