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

se citesc de la tastatura n numere naturale. sa se afiseze numerele care au cea mai mare suma a divizorilor proprii. (SUBPROGRAM)

Răspunsuri la întrebare

Răspuns de express
6
Ti-am facut o sursa in C++ de unde extragi subprogramul. Eu ti-am pus programul cu totul pentru a-l putea verifica. E o problema interesanta, destul de frumoasa. Sper sa-ti fie util programul. Succes!

#include <bits/stdc++.h>
using namespace std;
int j, x, a[1005];
void sum_div(int n, int v[])
{
    int w[1000] = {0}, k, d, i, m, s, maxx = 0;
    for(i = 1; i <= n; i ++)
    {
        m = v[i];
        s = 0;
        for(d = 1; d * d < m; d++)
        {
            if (m % d == 0) s = s + d + m / d;
        }
        if (m == d * d)  s = s + d;
        if (s > maxx) maxx = s, memset(w, 0, sizeof(w)), k = 1, w[1] = m;
         else if(s == maxx) w[++ k] = m;
    }
    for(i = 1; i <= k; i ++) cout << w[i] << " ";
    return;
}

int main()
{
    cin >> x;
    for(j = 1; j <= x; j ++)
     cin >> a[j];
    sum_div(x, a);
    return 0;
}
Alte întrebări interesante