Răspuns :
Am considerat ca numar perfect e acel numar care e egal cu suma divizorilor lui, in afara de el insusi, deci sper ca la asta te-ai referit :).
In C++:
#include <iostream>
using namespace std;
int main()
{
int n, max1=-1, max2=-1;
cin >> n;
for (int i=0; i<n; i++)
{
int x; cin >> x;
int S=0, OK=0;
for (int j=1; j<=x/2; j++)
if (x%j==0) S+=j;
if (S==x) OK=1;
if (OK&&x>max1)
{
max2 = max1;
max1= x;
}
else if (OK && x>max2)
max2=x;
}
cout << max1 << " " << max2;
return 0;
}
In pseudocod:
intreg n, max1<- -1, max2<- -1
citeste n
pentru i<-1, n executa:
intreg x, S<-0, OK<-0
citeste x
pentru j<-1,x/2 executa:
daca x%i=0 atunci: S <- S+i
daca S=x atunci: OK <- 1
daca OK=1 && x>max1 atunci:
max2 <- max1
max1 <- x
altfel daca OK=1 && x>max2
max2 <- x
scrie max1, " ", max2
In C++:
#include <iostream>
using namespace std;
int main()
{
int n, max1=-1, max2=-1;
cin >> n;
for (int i=0; i<n; i++)
{
int x; cin >> x;
int S=0, OK=0;
for (int j=1; j<=x/2; j++)
if (x%j==0) S+=j;
if (S==x) OK=1;
if (OK&&x>max1)
{
max2 = max1;
max1= x;
}
else if (OK && x>max2)
max2=x;
}
cout << max1 << " " << max2;
return 0;
}
In pseudocod:
intreg n, max1<- -1, max2<- -1
citeste n
pentru i<-1, n executa:
intreg x, S<-0, OK<-0
citeste x
pentru j<-1,x/2 executa:
daca x%i=0 atunci: S <- S+i
daca S=x atunci: OK <- 1
daca OK=1 && x>max1 atunci:
max2 <- max1
max1 <- x
altfel daca OK=1 && x>max2
max2 <- x
scrie max1, " ", max2
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile și inspiraționale. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, suntem aici pentru a vă ajuta. Ne face plăcere să vă revedem și vă invităm să adăugați site-ul nostru la favorite pentru acces rapid!