Advertisement
ksyshshot

Lab.2.2

Oct 26th, 2022
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.08 KB | Source Code | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class Main {
  4.     static Scanner scan = new Scanner(System.in);
  5.  
  6.     public static void writeTask(){
  7.         System.out.println("Данная программа находит все натуральные числа, которые можно представить\n" +
  8.                 "в виде произведения двух простых чисел и которые не превосходят введённое\n" +
  9.                 "натуральное число N");
  10.     }
  11.  
  12.     public static int inputNumber () {
  13.         int number = 0;
  14.         final int MAX_NUMBER = 127;
  15.         final int MIN_NUMBER = 2;
  16.         boolean isIncorrect = false;
  17.         do {
  18.             isIncorrect = false;
  19.             System.out.println("Введите натуральное число в диапазоне от " + MIN_NUMBER + " до " + MAX_NUMBER);
  20.             try {
  21.                 number = Byte.parseByte(scan.nextLine());
  22.             }catch (Exception e) {
  23.                 System.out.println("Число введено некорректно. Повторите попытку");
  24.                 isIncorrect = true;
  25.             }
  26.             if ((!isIncorrect) && (number < MIN_NUMBER)) {
  27.                 System.out.println("Введённое число не соответствует диапазону");
  28.                 isIncorrect = true;
  29.             }
  30.         } while (isIncorrect);
  31.         return number;
  32.     }
  33.  
  34.     public static int[] consistencyUpToNumber (int number) {
  35.         int[] array = new int[number - 1];
  36.         int i = 0;
  37.         while (i < number - 1)
  38.         {
  39.             array[i] = i + 2;
  40.             i++;
  41.         }
  42.         return array;
  43.     }
  44.  
  45.     public static int secondDivision(int arrNumbersElement, int quotient)
  46.     {
  47.         int[] arrOfPrimes = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61};
  48.         int arrCorrectnessElement = 0;
  49.         int k = 0;
  50.         while ((k < 18) && (arrOfPrimes[k] <= quotient))
  51.         {
  52.             if (quotient == arrOfPrimes[k])
  53.             {
  54.                 arrCorrectnessElement = arrNumbersElement;
  55.                 k = 18;
  56.             }
  57.             else
  58.             {
  59.                 arrCorrectnessElement = 0;
  60.                 k++;
  61.             }
  62.         }
  63.         return arrCorrectnessElement;
  64.     }
  65.  
  66.     public static int[] findingRequiredNumbers (int number) {
  67.         int[] arrOfPrimes = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61};
  68.         int[] arrNumbers = consistencyUpToNumber(number);
  69.         number--;
  70.         int[] arrCorrectness = new int[number];
  71.         for (int i = 0; i < number; i++) {
  72.             arrCorrectness[i] = 0;
  73.             int k = 0;
  74.             while ((k < 18) && (arrOfPrimes[k] < arrNumbers[i]))
  75.             {
  76.                 if (arrNumbers[i] % arrOfPrimes[k] == 0)
  77.                 {
  78.                     int quotient = arrNumbers[i] / arrOfPrimes[k];
  79.                     arrCorrectness[i] = secondDivision(arrNumbers[i], quotient);
  80.                     k = 18;
  81.                 }
  82.                 k++;
  83.             }
  84.         }
  85.         return arrCorrectness;
  86.     }
  87.  
  88.     public static void outputNumbers (int number, int[] arrCorrect) {
  89.         System.out.println("Полученные натуральные числа:");
  90.         int[] arrNumbers = consistencyUpToNumber(number);
  91.         number--;
  92.         int zeroValue = number;
  93.         for (int i = 0; i < number; i++)
  94.         {
  95.             if (arrCorrect[i] != 0)
  96.             {
  97.                 System.out.print(arrCorrect[i] + " ");
  98.                 zeroValue++;
  99.             }
  100.         }
  101.         if (zeroValue == number)
  102.         {
  103.             System.out.println("Натуральные числа, соответствующие требованиям, не найдены");
  104.         }
  105.     }
  106.     public static void main (String[] args) {
  107.         writeTask();
  108.         int numb = inputNumber();
  109.         scan.close();
  110.         int[] arrayOfCorrect = findingRequiredNumbers(numb);
  111.         outputNumbers(numb, arrayOfCorrect);
  112.     }
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement