Программа работала слишком долго и была закрыта!
package com.javarush.task.task20.task2025;
import java.util.Set;
import java.util.TreeSet;
/*
Алгоритмы-числа
*/
public class Solution {
public static long[] getNumbers(long N) {
if (N<=0) return null;
Set<Long> set = new TreeSet<>();
String [] s;
int m;
for (long i = N-1; i >= 0 ; i--) {
long n = 0;
s = String.valueOf(i).split("");
for (int j = 0; j<s.length;j++){
int t = 1;
int a = Integer.parseInt(s[j]);
for (int f = 0; f<s.length;f++) {
t *= a;
}
n += t;
}
if (n<N&&n==i) set.add(n);
}
int g = 0;
long [] result = new long[set.size()];
for (Long aSet : set) {
result[g] = aSet;
g++;
}
return result;
}
public static void main(String[] args) {
// long s1 = System.currentTimeMillis(); // - вернете вам текущее время в мс
// long s2 = Runtime.getRuntime().freeMemory(); // - вернет свободную память в байтах
// long [] s = getNumbers(5454555);
// System.out.println(s.length);
// for (long a:s) {
// System.out.print(a + " ");
// }
// long s11 = System.currentTimeMillis(); // - вернете вам текущее время в мс
// long s22 = Runtime.getRuntime().freeMemory(); // - вернет свободную память в байтах
// System.out.println();
// System.out.println((s11-s1)/1024);
// System.out.println(s2/1024/1024);
// System.out.println((s22-s2)/1024/1024);
}
}