https://pastein.ru/t/3-

  скопируйте уникальную ссылку для отправки


public class testtttt {

		static long[][] sumArray = getSumNumberArray();
		static List<Long> listArmst = new ArrayList<>();
		
	    public static long[] getNumbers(long N){
	    	long[] result = null;
	    	int[] cifry = {0,1,2,3,4,5,6,7,8,9,10};
	    	long chislo = 10;
	    	long sum;
	    	
	    	while (chislo<N){
	    		//System.out.println(chislo);
	    		int a = (int) ((chislo/10)%10);
	    		if (a==0){a=1;}
	    		chislo += a;
	    		sum = getSum(chislo);
	    		if (sum == getSum(sum)&&!listArmst.contains(sum)){listArmst.add(sum);}
	    		System.out.println(chislo+" sum="+sum);
				while (chislo%10>0){
					chislo+=1;
					sum = getSum(chislo);
					if (sum == getSum(sum)&&!listArmst.contains(sum)){listArmst.add(sum);}
		    		System.out.println(chislo+" sum="+sum);
				}
	    		
	    		
	    	}
	    	result = new long[listArmst.size()];
	    	Collections.sort(listArmst);
	    	for (int i=0;i<listArmst.size();i++){
	    		result[i]=listArmst.get(i);
	    	}
	    	return result;}
	    
	    
	    public static long getSum(long chislo){
	    	if (chislo==0){return 0;}
	    	else {
	    	int stepen = (int) Math.ceil(Math.log10(chislo + 0.5));
	    	long sum=0;
	    	char[] arrChislo = Long.toString(chislo).toCharArray();
	    	for (int i=0;i<arrChislo.length;i++){
	    		sum+=sumArray[Integer.parseInt(arrChislo[i]+"")][stepen-1];
	    	}
	    	return sum;}
	    }
	    
	    public static long[][] getSumNumberArray(){
	    	long[][] arr = new long[10][19];
	    	int a = 0;
	    	for(int b=1;b<20;a++){
	    		if (a==10){a=-1;b++;}
	    		else{arr[a][b-1]=(long)Math.pow(a, b);
	    		}
	    	}
	    	return arr;
	    }
	    
	                                                 
	    public static void main(String[] args) {                                                  
	    	Date date1 = new Date();
	    	long start = date1.getTime();
	    	long[] arrArmstrong = getNumbers(1067);
	    	Date date2 = new Date();
	    	long finish = date2.getTime();
	    	System.out.println(Arrays.toString(arrArmstrong));
	    	System.out.println((finish-start));
	    }                                                  
	}