Advertisement
THOMAS_SHELBY_18

Lab2_2(C++)

Oct 18th, 2023 (edited)
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.65 KB | Source Code | 0 0
  1. #include <iostream>
  2. #include <windows.h>
  3. #include <cmath>
  4. using namespace std;
  5.  
  6. int getNum(int min, int max) {
  7.     bool isNotCorrect;
  8.     int num;
  9.     do {
  10.         isNotCorrect = true;
  11.         cin >> num;
  12.         if (cin.fail() || (cin.get() != '\n')) {
  13.             cout << "Некорректный ввод! Введите значение еще раз:" << endl;
  14.             cin.clear();
  15.             while (cin.get() != '\n');
  16.         }
  17.         else {
  18.             if (num < min || num > max) {
  19.                 cout << "Недопустимое значение! Введите значение еще раз:" << endl;
  20.             }
  21.             else {
  22.                 isNotCorrect = false;
  23.             }
  24.         }
  25.     } while (isNotCorrect);
  26.     return num;
  27. }
  28.  
  29. int getPrimeDivisor(int num) {
  30.     double numRoot;
  31.     int i, primeDivisor;
  32.  
  33.     numRoot = sqrt(num);
  34.     i = 1;
  35.     do {
  36.         i++;
  37.     } while (num % i != 0 && i < numRoot);
  38.  
  39.     if (i > numRoot){
  40.         primeDivisor = num;
  41.     }
  42.     else {
  43.         primeDivisor = i;
  44.     }
  45.     return primeDivisor;
  46. }
  47.  
  48. int main() {
  49.     SetConsoleOutputCP(CP_UTF8);
  50.     const int MIN_P = 2, MAX_P = 10000;
  51.     int p, primeDivisor;
  52.  
  53.     cout << "Данная программа найдет все простые делители натурального числа P" << endl;
  54.  
  55.     cout << "Введите натуральное число Р от " << MIN_P << " до " << MAX_P << ":";
  56.     p = getNum(MIN_P, MAX_P);
  57.  
  58.     do{
  59.         primeDivisor = getPrimeDivisor(p);
  60.         cout << primeDivisor << " ";
  61.         p = p / primeDivisor;
  62.     } while (p != 1);
  63.  
  64.     return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement