Понимаю, что с большими числами у меня время в разы возрастает, т.к. перебираю все числа от 0 до N. Какой алгоритм можно применить, что бы не перебирать все друг за другом?
package com.javarush.task.task20.task2025;
/*
Алгоритмы-числа
*/
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Solution {
public static List<Long> getNumbers(long N) {
List<Long> result = new ArrayList<>();
for (int i = 0; i < N;i++) {
if (i == number(i)) {
result.add((long)i);
} else {
continue;
}
}
Collections.sort(result);
return result;
}
public static int number (long N){
String number = N + "";
char[] numberC = number.toCharArray();
int len = number.length();
double result = 0;
for (char x : numberC){
int a = x - '0';
result +=Math.pow(a,len);
}
return (int)result;
}
public static void main(String[] args) {
System.out.println(getNumbers(8208));
}
}