Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- using namespace std;
- ======
- 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.
- ======
- bool JeProst(long long n){
- if (n % 2 == 0) return false;
- for (int i=3; i<sqrt(n); i+=2){
- if (n%i == 0) return false;
- }
- return true;
- }
- ======
- 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
- for (b; b<n; b++){
- if (JeProst(b))
- cout << b;
- }
- ======
- void ProstiDoN(long long b, long long n){
- if (JeProst(b))
- cout << b << endl;
- if (b<n)
- ProstiDoN(b+1, n);
- }
- ======
- Ovdje ih upisujemo, i tada!
- ======
- int main() {
- long long b, n;
- //b = 3;
- cin >> b >> n;
- ProstiDoN(b, n);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement