Problema 30 va rog si explicata daca se poate
Răspunsuri la întrebare
Răspuns:
#include <iostream>
using namespace std;
int sum ( int x )
{
int s = 0;
for ( int d = 2; d <= x / 2; d++ )
if ( x % d == 0 )
s = s + d;
return s;
}
int main()
{
int x[100], y[100], n, i, aux;
cin >> n;
for ( int i = 1; i <= n; i++ )
{
cin >> x[i];
y[i] = sum(x[i]);
}
for ( int i = 1; i < n; i++ )
for ( int j = i + 1; j <= n; j++ )
if ( y[i] > y[j] )
{
aux = y[i];
y[i] = y[j];
y[j] = aux;
}
for ( int i = 1; i <= n; i++ )
cout << y[i] << " ";
return 0;
}
Explicație: functia cred ca o intelegi, e ca si la numar prim. Am pus numerele intr-un vector x, iar suma divizorilor intr-un alt vector y. Apoi am sortat vectorul y ( prin metoda bubble sort ) si am afisat vectorul y sortat.