Advertisement
hiker43

prost, slozen broj

Aug 10th, 2018
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.89 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. int main()
  4. {
  5.     using std::cout;
  6.     using std::cin;
  7.  
  8.     typedef unsigned long long ullong;
  9.  
  10.     cout << "\t\t\tProverka za prost broj\n";
  11.  
  12.     cout << "Vnesi broj (0 za stop):\t";
  13.     ullong broj; //promenliva koja kje go cuva brojot vnesen od korisnikot
  14.     cin >> broj;
  15.  
  16.     while(broj != 0) //glavniot loop koj kje se izvrsuva se dodeka korisnikot ne vnese 0
  17.     {
  18.         /*
  19.         Znamence koe kje bide true dokolku brojot e prost.
  20.         Na pocetok pretpostavuvame deka brojot e prost.
  21.         Celta na programot e da najde broj koj go deli brojot.
  22.         Dokolku najde, togas brojot ne e prost.
  23.         */
  24.         bool prost = true;
  25.         ullong delitel; //kje go cuva prviot broj sto kje se najde deka e delitel na brojot
  26.         if(broj == 1) prost = false; //1 po definicija ne e nitu prost nitu slozen
  27.         else if(broj == 2) prost = true; //mora da definirame deka 2 e prost broj
  28.         else if(broj % 2 == 0) // ako brojot se deli so 2, togas toj sigurno ne e prost broj
  29.         {
  30.             delitel = 2;
  31.             prost = false;
  32.         }
  33.         else
  34.         {
  35.             /*
  36.             Dokolku brojot ne se deli so 2, toj ne se deli so nitu eden paren broj,
  37.             pa treba da gi proverime samo neparnite
  38.             */
  39.             for(ullong i = 3; i <= broj / 2; i += 2) // deliteli na brojot mozat da bidat samo brojki pomali od negovata polovina
  40.             {
  41.                 if(broj % i == 0)
  42.                 {
  43.                     delitel = i;
  44.                     prost = false;
  45.                     break; // nema potreba da proveruvame povekje deliteli, vekje najdovme eden
  46.                 }
  47.             }
  48.         }
  49.         //sega treba samo da go proverime znamenceto prost
  50.         if(prost) //isto so if(prost == true)
  51.         {
  52.             cout << broj << " e prost broj.\n";
  53.         }
  54.         else
  55.         {
  56.             if(broj == 1) //posebniot slucaj dokolku vneseniot broj e 1
  57.             {
  58.                 cout << "1 ne e nitu prost, nitu slozen broj.\n";
  59.             }
  60.             else
  61.             {
  62.                 cout << broj << " ne e prost broj. Se deli so " << delitel << ".\n";
  63.             }
  64.         }
  65.  
  66.         //nov vlez od korisnikot
  67.         cout << "Vnesi broj (0 za stop):\t";
  68.         cin >> broj;
  69.     }
  70.  
  71.     return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement