Informatică, întrebare adresată de Utilizator anonim, 8 ani în urmă

Trebuie sa scriu in C++ un cod prin care sa scriu suma divizorilor impari a lui n
int n,s=0,d;
cout >n;
for ( d = 1; d <= n; d++)
{
if (n%d== 0 && d % 2 != 0)
{
s =s+d;

}
}
cout< return 0;


boiustef: e scris, și se pare e corect, doar nu eficient...
boiustef: care e problema?
andrei750238: Nu are rost sa iei la rand fiecare numar daca cauti doar divizorii impari ()
andrei750238: Si nu are rost sa te duci pana la n, trebuie sa te duci doar pana la jumatate (n/2), sau daca vrei sa fi extrem de eficient pana la radical din n.

Desigur in cazurile acestea trebuie la final sa verifici daca n este impar

Răspunsuri la întrebare

Răspuns de andrei750238
0

#include <iostream>

using namespace std;

int main(){

int n,s=0,d;

cin >> n;

for ( d = 1; d <= n/2; d+=2){

 if (n%d== 0)s=s+d;

}

if(n%2==1) s=s+n;

cout<< s;

}

Alte întrebări interesante