Savršen Broj

Program sa opcijama za provjeru da li je uneseni broj “savršen” te ispis savršenih brojeva u zadanom intervalu.

ps. broj je savršen ako je jednak zbiru svih svojih djeljitelja osim samog sebe…npr 6=1+2+3 (6 je savrsen broj).


#include <iostream>
using namespace std;

bool DaLiJeSavrsenBroj(int broj) {
  int i = 1, suma = 0;

  while (i < broj) {
    // provjera da li je i djeljitelj od broja
    if (broj % i == 0)
      // suma= zbir djeljitelja broja
      suma += i;
    i++;
  }
  if (suma == broj)
    return true;
  else
    return false;
}

void SavrseniBrojevi(int donja, int gornja) {
  cout << "Savrseni brojevi u unesenom intervalu su: " << endl;
  for (int i = donja; i <= gornja; i++) {
    if (DaLiJeSavrsenBroj(i)) cout << i << endl;
  }
}
int main() {
  int n, donja, gornja;
  char p = 'a';
  do {
    cout << endl;
    cout << "Dobrodosli!" << endl;
    cout << "Odaberite opciju: " << endl;
    cout << "1.Provjeri da li je broj Savrsen." << endl;
    cout << "2.Ispisi sve savrsene brojeve u intervalu" << endl;
    cout << "0 za izlaz" << endl; cout<<endl;     
    cin >> p;
    switch (p) {
      case '1':
        cout << "Unesite broj: " << endl;         cin >> n;
        if (DaLiJeSavrsenBroj(n))
          cout << n << " je savrsen broj!" << endl;
        else
          cout << n << " nije savrsen broj!" << endl;
        break;
      case '2':
        cout << "Unesite donju granicu: " << endl;         cin >> donja;
        cout << "Unesite gornju granicu: " << endl;         cin >> gornja;
        cout << endl;
        SavrseniBrojevi(donja, gornja);
        break;
      default:
        cout << "Opcije su 0,1,2!" << endl;
    }
  } while (p != '0');
  system("pause");

  return 0;
}

Capture

1 thoughts on “Savršen Broj

Komentariši