Informatică, întrebare adresată de ftyr556676yyu, 8 ani în urmă

Un număr perfect este un număr natural egal cu dublul sumei divizorilor săi.
Exemplu: 6 este număr perfect pentru că 2∙6=1+2+3+6.
Fișierul perfect.in conține pe primul rând un șir de numere naturale din intervalul
[1,10 6 ], separate prin câte un spațiu. Se cere scrierea și executarea la calculator a unui
program care citește șirul de numere din fișier, apoi afișează pe ecran cel mai mare număr
perfect din șirul citit și prima poziție a acestuia în șir, pe același rând, separate prin câte un
spațiu.
Programul va folosi apeluri utile ale subprogramului perfect. Dacă în fișier nu există
niciun număr perfect, atunci pe ecran se afișează mesajul imposibil.
Exemplu: dacă fișierul perfect.in conține numerele 2048 6 79 496 1379
28 se va afișa 496 4

Răspunsuri la întrebare

Răspuns de Sergetec
2

Salut!

Ai mai jos rezolvarea in limbajul C++

#include <fstream>

using namespace std;

ifstream cin("perfect.in");

ofstream cout("perfect.out");

int sumDiv(int n)

{

 int s = 0;

 for (int i = 1; i <= n; i++)

 {

   if (n % i == 0)

   {

     s += i;

   }

 }

 return s;

}

int main()

{

 int n, max = -1, poz;

 cin >> n;

 for (int i = 1; i <= n; i++)

 {

   int x;

   cin >> x;

   if (sumDiv(x) == x * 2)

   {

     if (x > max)

     {

       max = x;

       poz = i;

     }

   }

 }

 cin.close();

 if (max == -1)

 {

   cout << "imposibil";

 }

 else

 {

   cout << max << " " << poz;

 }

 cout.close();

return 0;

}

Alte întrebări interesante