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

Se citeste de la tastatura un numar natural nenul n de cel mult 4 cifre. Sa se verifice daca suma divizorilor lui n este un numar prim. Daca da, se va afisa suma divizorilor sai, altfel se va scrie numarul acestora. Ex: pentru n=30 se va afisa (1+2+3+5+6+10+15+30=72 nu e prim deci se va afisa 8, numarul divizorilor)

Răspunsuri la întrebare

Răspuns de geniu1i
1

Răspuns:

#include <iostream>

using namespace std;

int n;

int d;

int s, nrdivi;

bool Eprim ( int x )

{

   if ( x <= 1 ) return 0;

   int d = 2;

   while ( d * d <= x )

   {

       if ( x % d == 0 )

           return 0;

       d++;

   }

   return 1;

}

int main()

{

   cin >> n;

   d = 1;

   while ( d * d < n )

   {

       if ( n % d == 0 )

       {

           s += d;

           s += n / d;

           nrdivi += 2;

       }

       d++;

   }

   if ( n / d == d )

   {

       nrdivi++;

       s += d;

   }

   if ( Eprim(s) )

       cout << s;

   else cout << nrdivi;

   return 0;

}

Explicație:

Alte întrebări interesante