Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.86 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. ======
  7.  
  8. JeProst je funkcija koja nam kazuje je li broj prost ili nije. Nju cemo koristiti unutar rekurzije, ali ona nije rekurzivna. Tek da nam bude kod laksi za citanje. Valjda znas kako se provjerava prostost broja. Ako je djeljiv sa 2, onda nije prost. Ako je djeljiv sa bilo kojim neparnim brojem poslje dva do svog kvadrata, onda nije prost.
  9.  
  10. ======
  11.  
  12. bool JeProst(long long n){
  13. if (n % 2 == 0) return false;
  14. for (int i=3; i<sqrt(n); i+=2){
  15. if (n%i == 0) return false;
  16. }
  17. return true;
  18. }
  19.  
  20. ======
  21.  
  22. ProstiDoN je void funkcija, tako da ne mora nista vracati. U njoj pozivamo B i N koje cemo unjeti u main()-u. B nam JeProst broj od KOJEG pocinjemo traznju prostih brojeva, a N nam je broj DO kojeg trazimo. Ako hoces da ti ide bez B-a, onda samo u main()-u de-komentariši b = 3. To je zato jer ako tek kreiramo broj B u rekurzivnoj funkciji, ona kad se bude ponavljala ce ponovo kreirati broj B u svojoj prvobitnoj formi (ovdje broj 3, jer je to prvi prosti broj), a nama treba B da se krece unaprijed. valjda ima smisla. Unutar nje prvo provjeravamo je li broj B prost, i ako jeste ispisujemo ga, a onda, ako je broj B manji od N, funkcija poziva samu sebe - ali sa B+1. Tada ta novopozvana funkcija ce raditi isto kao i prethodna, ali sa brojem B za 1 vecim. Nakon nekog vremena broj B ce dostici broj N i if (b<n) nece vise vaziti, pa ce funkcija sama sebe ukinuti. Ovo je doslovno isto kao da smo napisali
  23.  
  24. for (b; b<n; b++){
  25. if (JeProst(b))
  26. cout << b;
  27. }
  28.  
  29. Nadam se da mozes skontati na koji nacin je isto.
  30.  
  31. ======
  32.  
  33. void ProstiDoN(long long b, long long n){
  34. if (JeProst(b))
  35. cout << b << endl;
  36. if (b<n)
  37. ProstiDoN(b+1, n);
  38. }
  39.  
  40. ======
  41. Ovdje ih upisujemo, i tada!
  42. ======
  43.  
  44. int main() {
  45. long long b, n;
  46. //b = 3;
  47. cin >> b >> n;
  48. ProstiDoN(b, n);
  49.  
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement