Здравствуйте, у меня возникла проблема.
При компиляции программы с числом Long.MAX_VALUE, на консоль не выдаются значения, а 69 и 75 строчка кода, показывает 0 и 0. При любых значениях.
Что не так?
package com.javarush.task.task20.task2025;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
/*
Алгоритмы-числа
*/
public class Solution {
public static long[] getNumbers(long N){
ArrayList<Integer> ints = new ArrayList<>();
for (int i = 0; i < N; i++) {
if(Results(i)){
ints.add(i);
}
}
Collections.sort(ints);
long[] result = new long[ints.size()];
for (int i = 0; i < result.length; i++) {
result[i] = ints.get(i);
}
return result;
}
static int[] SplitNumber(int n){
ArrayList<Integer> intArray = new ArrayList<>();
int i = 0;
while (n > 0){
intArray.add(n % 10);
n = n / 10;
i++;
}
Collections.reverse(intArray);
int[] ints = new int[intArray.size()];
for (int j = 0; j < ints.length; j++) {
ints[j] = intArray.get(j);
}
return ints;
}
static int Power(int x, int y){
return y==0 ? 1 : x * Power(x, y - 1);
}
static boolean Results(int number){
int[] ints = SplitNumber(number);
int sum = 0;
int mult = ints.length;
for (int element : ints) {
sum += Power(element, mult);
}
return sum==number;
}
public static void main(String[] args) {
long a = System.currentTimeMillis();
System.out.println(Arrays.toString(getNumbers(Long.MAX_VALUE)));
long b = System.currentTimeMillis();
System.out.println("memory " + (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / (8 * 1024));
System.out.println("time = " + (b - a) / 1000);
a = System.currentTimeMillis();
System.out.println(Arrays.toString(getNumbers(1000000)));
b = System.currentTimeMillis();
System.out.println("memory " + (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / (8 * 1024));
System.out.println("time = " + (b - a) / 1000);
}
}