Own digits power sum: Difference between revisions
Content added Content deleted
(→Faster) |
(New post.) |
||
Line 992: | Line 992: | ||
See [[Narcissistic_decimal_number#J]] |
See [[Narcissistic_decimal_number#J]] |
||
=={{header|Java}}== |
|||
<syntaxhighlight lang="java"> |
|||
import java.util.List; |
|||
import java.util.stream.Collectors; |
|||
import java.util.stream.IntStream; |
|||
public final class OwnDigitsPowerSum { |
|||
public static void main(String[] args) { |
|||
List<Integer> powers = IntStream.rangeClosed(0, 9).boxed().map( i -> i * i ).collect(Collectors.toList()); |
|||
System.out.println("Own digits power sums for N = 3 to 9 inclusive:"); |
|||
for ( int n = 3; n <= 9; n++ ) { |
|||
for ( int d = 2; d <= 9; d++ ) { |
|||
powers.set(d, powers.get(d) * d); |
|||
} |
|||
long i = (long) Math.pow(10, n - 1); |
|||
long max = i * 10; |
|||
int lastDigit = 0; |
|||
int sum = 0; |
|||
List<Integer> digits; |
|||
while ( i < max ) { |
|||
if ( lastDigit == 0 ) { |
|||
digits = String.valueOf(i).chars().map(Character::getNumericValue).boxed().toList(); |
|||
sum = digits.stream().map( d -> powers.get(d) ).mapToInt(Integer::intValue).sum(); |
|||
} else if ( lastDigit == 1 ) { |
|||
sum += 1; |
|||
} else { |
|||
sum += powers.get(lastDigit) - powers.get(lastDigit - 1); |
|||
} |
|||
if ( sum == i ) { |
|||
System.out.println(i); |
|||
if ( lastDigit == 0 ) { |
|||
System.out.println(i + 1); |
|||
} |
|||
i += 10 - lastDigit; |
|||
lastDigit = 0; |
|||
} else if ( sum > i ) { |
|||
i += 10 - lastDigit; |
|||
lastDigit = 0; |
|||
} else if ( lastDigit < 9 ) { |
|||
i += 1; |
|||
lastDigit += 1; |
|||
} else { |
|||
i += 1; |
|||
lastDigit = 0; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
</syntaxhighlight> |
|||
{{ out }} |
|||
<pre> |
|||
Own digits power sums for N = 3 to 9 inclusive: |
|||
153 |
|||
370 |
|||
371 |
|||
407 |
|||
1634 |
|||
8208 |
|||
9474 |
|||
54748 |
|||
92727 |
|||
93084 |
|||
548834 |
|||
1741725 |
|||
4210818 |
|||
9800817 |
|||
9926315 |
|||
24678050 |
|||
24678051 |
|||
88593477 |
|||
146511208 |
|||
472335975 |
|||
534494836 |
|||
912985153 |
|||
</pre> |
|||
=={{header|jq}}== |
=={{header|jq}}== |