👤

Cerinţa

Se citește un număr natural n. Să se determine suma divizorilor impari ai săi.
EU AM SCRIS ASTA:
#include
#include
using namespace std;

int sumimpdiv(int x)
{int d,s=0;
for(d=1;d<=x;d++)
if(x%d==0&&d%2==1)
s=s+d;
return s;
}
int main()
{int x;
cin>>x;
cout< return 0;
}
IAR PROBLEMA MEA E LIMITA DE TIMP DAU COROANA


Răspuns :

Am revenit cu problema in varianta C++. Sper ca te-am ajutat.Am facut-o pe un compilator online. Dupa mine e cel mai bine optimizata.Nu uita daca te-am ajutat sa imi dai o coronita. Tot respectul.

#include <iostream>#include <math.h>
using namespace std;
int sumimpdiv(int x)
{
    int s=0;
    if(x == 1)
        s =1;
    else
    {
        for(int d=1;d<=sqrt(x)+1;d=d+2)
        if(x%d==0&&d%2==1)
        {
            s=s + d + (x/d);
            if((x/d)%2!=1 || (x/d) == d)
                s-=(x/d);
        }
        cout<<endl;
    }
    return s;
}
int main()
{
    int x;
    cin>>x;
    cout<<endl;
    cout<<sumimpdiv(x);
    return 0;
}