Advertisement
Vernon_Roche

Задание 2 Java (Лабораторная работа 2)

Oct 11th, 2023 (edited)
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.14 KB | None | 0 0
  1. import java.io.PrintStream;
  2. import java.util.Scanner;
  3.  
  4. public class Lab2 {
  5.     static PrintStream ps = new PrintStream(System.out);
  6.     static Scanner scan = new Scanner(System.in);
  7.     public static void main(String args[]) {
  8.         int k, border;
  9.         ps.println("Программа выводит все натуральные числа, которые в k раз больше суммы своих цифр.");
  10.         k = inputK();
  11.         border = searchBorder(k);
  12.         ps.println("Искомые числа:");
  13.         printAllResultNumbers(k, border);
  14.     }
  15.  
  16.     public static int inputK() {
  17.         int k;
  18.         boolean isNotCorrect;
  19.         k = 0;
  20.         ps.println("Введите k в диапазоне [1; 200 000]:");
  21.         do {
  22.             isNotCorrect = false;
  23.             try {
  24.                 k = Integer.parseInt(scan.nextLine());
  25.             }
  26.             catch (NumberFormatException err) {
  27.                 ps.println("Ошибка ввода. Введите натуральное число в промежутке [1; 200 000]:");
  28.                 isNotCorrect = true;
  29.             }
  30.             if ((k < 1) || (k > 200000)) {
  31.                 ps.println("Ошибка ввода. Введите натуральное число в промежутке [1; 200 000 ]:");
  32.                 isNotCorrect = true;
  33.             }
  34.         } while (isNotCorrect);
  35.         return k;
  36.     }
  37.  
  38.     public static int searchBorder(int k)
  39.     {
  40.         int pot;
  41.         pot = 1;
  42.         for (int i = 1; i <= 10; i++) {
  43.             if (pot > 9 * i * k) {
  44.                 return pot;
  45.             }
  46.             pot = pot * 10;
  47.         }
  48.         return 0;
  49.     }
  50.     public static void printAllResultNumbers(int k, int border)
  51.     {
  52.         for (int i = 1; i <= border; i++) {
  53.             if (i == k * countSumNumbers(i)) {
  54.                 ps.println(i);
  55.             }
  56.         }
  57.     }
  58.  
  59.     public static int countSumNumbers(int number)
  60.     {
  61.         int sum;
  62.         sum = 0;
  63.         while (number != 0) {
  64.             sum = sum + number % 10;
  65.             number = number / 10;
  66.         }
  67.         return sum;
  68.     }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement