Advertisement
THOMAS_SHELBY_18

Lab2_2(Java)

Oct 18th, 2023 (edited)
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.91 KB | Source Code | 0 0
  1. package com.company;
  2. import java.util.Scanner;
  3.  
  4. public class Main {
  5.     public static int getNum(int min, int max) {
  6.         boolean isNotCorrect;
  7.         int num;
  8.  
  9.         Scanner scan = new Scanner(System.in);
  10.         num = 0;
  11.  
  12.         do {
  13.             isNotCorrect = false;
  14.             try {
  15.                 num = Integer.parseInt(scan.nextLine());
  16.             }
  17.             catch (NumberFormatException e) {
  18.                 isNotCorrect = true;
  19.                 System.out.print("Некорректный ввод! Введите значение еще раз:" );
  20.             }
  21.             if ((!isNotCorrect) && (num < min || num > max)) {
  22.                 isNotCorrect = true;
  23.                 System.out.print("Недопустимое значение! Введите значение еще раз:");
  24.             }
  25.         } while (isNotCorrect);
  26.  
  27.         scan.close();
  28.         return num;
  29.     }
  30.     public static int getPrimeDivisor(int num) {
  31.         double numRoot;
  32.         int i, primeDivisor;
  33.  
  34.         numRoot = Math.sqrt(num);
  35.         i = 1;
  36.         do {
  37.             i++;
  38.         } while (num % i != 0 && i < numRoot);
  39.  
  40.         if (i > numRoot){
  41.             primeDivisor = num;
  42.         }
  43.         else {
  44.             primeDivisor = i;
  45.         }
  46.         return primeDivisor;
  47.     }
  48.  
  49.     public static void main(String[] args) {
  50.     final int MIN_P = 2, MAX_P = 10000;
  51.         int p, primeDivisor;
  52.  
  53.         System.out.println("Данная программа найдет все простые делители натурального числа P");
  54.  
  55.         System.out.print("Введите натуральное число Р от " + MIN_P + " до " + MAX_P + ":");
  56.         p = getNum(MIN_P, MAX_P);
  57.  
  58.         do{
  59.             primeDivisor = getPrimeDivisor(p);
  60.             System.out.print(primeDivisor + " ");
  61.             p = p / primeDivisor;
  62.         } while (p != 1);
  63.     }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement