24.2.3.24010740. Za neki broj kažemo da je savršen ukoliko je jednak sumi svih svojih djelilaca. Na primjer, 28 je savršen broj: njegovi djelioci su 1, 2, 4, 7 i 14, a 1 + 2 + 4 + 7 + 14 = 28. Napisati program koji traži da se sa tastature unese cijeli brojevi a i b, a koji zatim ispisuje sve savršene brojeve u opsegu od a do b. Kao provjeru ispravnosti programa možete koristiti činjenicu da su jedini savršeni brojevi u opsegu od 1 do 100 brojevi 6 i 28.

Opis rješenja:

Listing programa:

#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int a,b,s(1);
cout<<"Unesi opseg brojeva :\n";
cin>>a>>b;
bool t(true);
a=a+1;
for(a;a<=b-1;a++){    
    for(int i=2;i<=a-1;i++)      
        if((a%i)==0)s+=i;
    if(s==a){cout<<a<<"  ";t=false;}
    s=1;
   }
if(t)cout<<"\nNema savrsenih brojeva u zadatom opsegu.";       
getch();
return 0;
}

Ispis na ekranu:

Riješeni zadaci 2    Index