Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.31 KB | None | 0 0
  1. /*
  2.     Leonardo Gazdek
  3.    
  4.     Program u�itava dva prirodna broja M, N, 10000 < M < N < 99999. U tekstualnu datoteku potrebno
  5.     je upisati sve proste brojeve izmedu M i N. Nakon sto je datoteka generirana, potrebno je pronaci
  6.     dva uzastopna prosta broja cija je razlika najveca te ih ispisati. Postoji li vise brojeva izmedu kojih je
  7.     razlika najveca, potrebno je ispisati sve takve parove brojeva.
  8.    
  9.     M = 12000
  10.     N = 15000
  11.     (12889-12853) = 36                                                                                                      
  12.     (14143-14107) = 36  
  13.    
  14. */
  15. #include <iostream>
  16. #include <fstream>
  17. #include <cstdlib>
  18. #include <cmath>
  19.  
  20. using namespace std;
  21.  
  22. bool jeProsti(int broj) {
  23.     for(int i=2;i<sqrt(broj);i++)
  24.         if(broj%i==0) return false;
  25.     return true;
  26. }
  27.  
  28. struct element {
  29.     int broj;
  30.     element* sljedeci;
  31. };
  32.  
  33.  
  34.  
  35. int main() {
  36.     unsigned int m,n;
  37.    
  38.     do {
  39.         cin>>m>>n;
  40.     }
  41.     while(!((m>10000 && m <99999) && (n>10000 && n <99999) && (m<n)));
  42.    
  43.    
  44.    
  45.     element* lista = NULL;
  46.     element* prosliElement;
  47.     ofstream outputDat ("datoteka.txt");
  48.     for(int i=m;i<=n;i++) {
  49.         if(jeProsti(i)) {
  50.             outputDat << i << endl;
  51.             element* trenutniElement = new element;
  52.             trenutniElement->broj = i;
  53.             trenutniElement->sljedeci=NULL;
  54.             if(lista==NULL)
  55.                 lista=trenutniElement;
  56.             else
  57.                 prosliElement->sljedeci = trenutniElement;
  58.            
  59.             prosliElement = trenutniElement;
  60.         }
  61.     }
  62.     outputDat.close();
  63.    
  64.     // prvo prona�emo maksimalnu razliku u listi
  65.     element* elem = lista;
  66.     int prosliBroj = elem->broj;
  67.     int maxRazlika = 0;
  68.     int razlikaPrvi=0, razlikaDrugi=0;
  69.     elem=elem->sljedeci;
  70.     while(elem!=NULL) {
  71.         int razlika = elem->broj - prosliBroj;
  72.         if(razlika > maxRazlika) {
  73.             maxRazlika = razlika;
  74.             razlikaPrvi = elem->broj;
  75.             razlikaDrugi = prosliBroj;
  76.         }
  77.         prosliBroj = elem->broj;
  78.         elem = elem->sljedeci;
  79.     }
  80.    
  81.     // onda provjerimo koji sve parovi imaju tu razliku
  82.     elem=lista;
  83.     prosliBroj = elem->broj;
  84.     razlikaPrvi = 0;
  85.     razlikaDrugi = 0;
  86.     elem = elem->sljedeci;
  87.     while(elem!=NULL) {
  88.         int razlika = elem->broj - prosliBroj;
  89.         if(razlika == maxRazlika) {
  90.             razlikaPrvi = elem->broj;
  91.             razlikaDrugi = prosliBroj;
  92.             cout << "(" << razlikaPrvi << "-" << razlikaDrugi << ") = " << maxRazlika << endl;
  93.         }
  94.         prosliBroj = elem->broj;
  95.         elem = elem->sljedeci;
  96.     }
  97.     return 0;
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement