Informatică, întrebare adresată de ToxicCookieXD, 9 ani în urmă

Un număr natural este pseudoperfect dacă este divizor al sumei divizorilor săi.

Cerinţa
Să se scrie un program care verifică dacă un număr natural citit de la tastatură este pseudoperfect.

Date de intrare
Programul citește de la tastatură numărul n

Date de ieşire
Programul afișează pe ecran mesajul DA, dacă n este număr pseudoperfect, respectiv NU, în caz contrar.

Exemplu:
Intrare

120
Ieșire

DA

Răspunsuri la întrebare

Răspuns de Utilizator anonim
16
#include<iostream>
using namespace std;

int main ()
{
int n,d,s=1;
cout<<"Dați numărul n=");
cin>>n;
s+=n;
for(d=1;d<n;i++)
if(n%d==0)
s=s+d;
if(s%n==0)
cout<<"DA";
else
cout<<"NU";
return 0;
}

Utilizator anonim: Păi ce trebuia să scriu?
Utilizator anonim: dar ce litera e asta?nu e I?
Rayzen: scrii fara it;
Rayzen: doar d<=n
Utilizator anonim: Ok
Utilizator anonim: Gata
Utilizator anonim: Acum e bine?
Rayzen: Ye.
Utilizator anonim: Ce?
Rayzen: Ye, adica, da.
Răspuns de Rayzen
9
#include <iostream>
using namespace std;
int main()
{   
   int n,s=0; 
   cin>>n;
   for(int d=1;d<=n;d++) 
        {     
                  if(n % d == 0)     
                        {       
                                  s += d;     
                        }   
         } 

   if(s % n == 0)   
         {     
              cout<<"DA";
         }   
   else   
         {   
               cout<<"NU"; 
         }
}

stassahul: Pai e rau, ii da 70 puncte, il pui pe n 1.000.000.000 si programul lucreaza lent
Zlatan: Aplici o formulă sau calculezi suma efectiv, parcurgând până la radical din n.
Rayzen: serios? exista si problema asta pe pbinfo?
Rayzen: Da.. asta e cea mai lenta metoda de a afla divizorii... programul sta sa ii numere 1 cate 1 pana la n, nu e eficient deloc, nu ma gandii la alta metoda. De fapt nici nu incercai, ma gandeam ca nu e pe pbinfo aceasta problema.
Alte întrebări interesante