Advertisement
wohyperion

Проверка числа на простоту

Dec 6th, 2016
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.37 KB | None | 0 0
  1. /*
  2.  * Лабораторная №1
  3.  * Проверить число на простоту.
  4. */
  5.  
  6. #include <iostream>
  7. #include <cmath>
  8. #include <list>
  9.  
  10. using namespace std;
  11.  
  12. void simpleNumb(int n)
  13. {
  14.     bool flag = true;
  15.     for (int i = 2; i <= n; i++) { // N
  16.         if (n % i == 0 && i != n) { // N
  17.             flag = false; //
  18.             break; //
  19.         }
  20.     }
  21.     // Result: O(N)
  22.     flag ? cout << "Simple!\n" : cout << "Not simple!\n";
  23. }
  24.  
  25. void simpleNumb2(int n)
  26. {
  27.     bool flag = true;
  28.     for (int i = 2; i <= sqrt((float)n); i++) { // sqrt(N)
  29.         if (n % i == 0) { // sqrt(N)
  30.             flag = false; //
  31.             break; //
  32.         }
  33.     }
  34.     // Result: O(sqrt(N))
  35.     flag ? cout << "Simple!\n" : cout << "Not simple!\n";
  36. }
  37.  
  38. void simpleNumbFinal(int n)
  39. {
  40.     list<int> div;
  41.     div.push_back(2);
  42.  
  43.     for (int i = 3; i < n + 1; i += 2)
  44.     {
  45.         for (list<int>::iterator j = div.begin(); j != div.end(); j++)
  46.         {
  47.             if (*j > float(sqrt(i)))
  48.             {
  49.                 div.push_back(i);
  50.                 break;
  51.             }
  52.             else if (i % *j == 0)
  53.                 break;
  54.         }
  55.     }
  56.  
  57.     for (list<int>::iterator i = div.begin(); i != div.end(); i++)
  58.         cout << *i << ' ';
  59. }
  60.  
  61. int main()
  62. {
  63.     simpleNumb(56783);
  64.     simpleNumb2(56783);
  65.     simpleNumbFinal(56791);
  66.     return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement