кодесурса

Упражнения на Java: создание и отображение всех чисел Капрекара, меньших 1000

script1adsense2code
script1adsense3code

Номера Java: Упражнение-4 с решением

Напишите программу на Java, чтобы генерировать и показывать все числа Капрекара, меньшие 1000.

В теории чисел число Капрекара для данного основания является неотрицательным целым числом, представление квадрата которого в этом основании можно разделить на две части, которые снова складываются в исходное число. Например, 45 - это число Капрекара, потому что 45 2 = 2025 и 20 + 25 = 45.
Первые несколько чисел Капрекара в базе 10:
1, 9, 45, 55, 99, 297, 703, 999, 2223, 2728, 4879, 4950, 5050, 5292,…

Иллюстрированная презентация:


Пример решения:

Java-код:

 public class Example4 {
      public static void main(String[] args){
        int ctr = 0;
        int base = (args.length > 0) ? Integer.parseInt(args[0]) : 10;
        for(long n = 1; n <= 1000; n++){
            String sqr_Str = Long.toString(n * n, base);
            for(int j = 0; j < sqr_Str.length() / 2 + 1; j++){
                String[] parts = split_num(sqr_Str, j);
                long first_Num = Long.parseLong(parts[0], base);
                long sec_Num = Long.parseLong(parts[1], base);
                if(sec_Num == 0) break;
                if(first_Num + sec_Num == n){
                    System.out.println(Long.toString(n, base) +
                            "\t" + sqr_Str + "\t  " + parts[0] + " + " + parts[1]);
                    ctr++;
                    break;
                }
            }
        }
        System.out.println(ctr + " Kaprekar numbers.");
    }
     private static String[] split_num(String str, int idx){
        String[] ans1 = new String[2];
        ans1[0] = str.substring(0, idx);
        if(ans1[0].equals("")) ans1[0] ="0"; 
        ans1[1] = str.substring(idx);
        return ans1;
    }	
}

Пример вывода:

 1 1 0 + 1                                                                                       
9 81 8 + 1                                                                                       
45 2025 20 + 25                                                                                     
55 3025 30 + 25                                                                                     
99 9801 98 + 01                                                                                     
297 88209 88 + 209                                                                                    
703 494209 494 + 209                                                                                   
999 998001 998 + 001                                                                                   
8 капрекарских чисел. 

Блок - схема:

«Блок-схема:

Редактор кода Java:

Внесите свой код и комментарии через Disqus.

Previous: написать программу на Java для генерации случайных целых чисел в определенном диапазоне.
Далее: Напишите программу на Java, чтобы найти число начальных чисел-кандидатов Лихреля и связанных чисел для n в диапазоне 1..10000 включительно. (С этим пределом итерации 500).

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code