Advertisement
ksyshshot

Untitled

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