SHARE
TWEET

Untitled

a guest Nov 14th, 2017 43 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*Напишите программу, которая находит во входном потоке простые числа. Входной поток заканчивается символом ‘!’*/
  2.  
  3.  
  4. #include <iostream>
  5. #include <string>
  6. using namespace std;
  7.  
  8. bool isPrime(int n) {
  9.     for (int i = 2; i * i <= n; ++i) {
  10.         if (n % i == 0) return false;
  11.     }
  12.     return true;
  13. }
  14.  
  15. int powerOfTen(int n) {
  16.     int temp = 1;
  17.     for (int i = 0; i < n; ++i) {
  18.         temp *= 10;
  19.     }
  20.     return temp;
  21. }
  22.  
  23. bool isNumber(string input, int & n) {
  24.     n = 0;
  25.     for (int i = input.size() - 1; i >= 0; --i) {
  26.         auto c = input[i];
  27.         switch (c) {
  28.         case '0' :
  29.             break;
  30.         case '1' :
  31.             n += powerOfTen(i);
  32.             break;
  33.         case '2' :
  34.             n += 2 * powerOfTen(i);
  35.             break;
  36.         case '3' :
  37.             n += 3 * powerOfTen(i);
  38.             break;
  39.         case '4' :
  40.             n += 4 * powerOfTen(i);
  41.             break;
  42.         case '5' :
  43.             n += 5 * powerOfTen(i);
  44.             break;
  45.         case '6' :
  46.             n += 6 * powerOfTen(i);
  47.             break;
  48.         case '7' :
  49.             n += 7 * powerOfTen(i);
  50.             break;
  51.         case '8' :
  52.             n += 8 * powerOfTen(i);
  53.             break;
  54.         case '9' :
  55.             n += 9 * powerOfTen(i);
  56.             break;
  57.         default :
  58.             return false;
  59.         }
  60.     }
  61.     return true;
  62. }
  63.  
  64. int main() {
  65.     string current;
  66.     getline(cin, current);
  67.     while (current != "!") {
  68.         int n;
  69.         if (isNumber(current, n)) {
  70.             if (n == 1) {
  71.                 cout << "1: Unit";
  72.             } else if (n <= 0) {
  73.                 cout << n << ": Not natural";
  74.             } else if (isPrime(n)) {
  75.                 cout << n << ": Prime";
  76.             } else {
  77.                 cout << n << ": Composite";
  78.             }
  79.         } else {
  80.             cout << current << ": Not a number";
  81.         }
  82.         cout << endl;
  83.         getline(cin, current);
  84.     }
  85.  
  86.     return 0;
  87. }
RAW Paste Data
Top