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

Cum pot face acest cod mai eficient?????


#include

using namespace std;

int main()
{
int n,S=0,d;
cin >> n;
for (d=1; d<=n/2; d++)
{
if (n%d==0&&d%2!=0)
{
S+=d;
}
}
cout << S;
}

Acest cod e pentru următoarea problemă de pe pbinfo: Se citește un număr natural n. Să se determine suma divizorilor impari ai săi. Primesc doar 60 de puncte fiindcă acest cod merge lent dacă este introdusă o valoare mare(500000000).Vă rog să mă ajutați!

Răspunsuri la întrebare

Răspuns de qzDeydara
0
http://imgur.com/a/iqZ8J

qzDeydara: #include <iostream>

using namespace std;

int main()
{
int n,i,S=0;
cout<<"n="; cin>>n;
for (i=1;i<=n;i++)
if (i%2==1 && n%i==0)
S=S+i;
cout<<"S="<<S;
return 0;
}
qzDeydara: incearca sa dai valori mai mici , calculatorul se ,,forteaza" prea mult daca ii dai numere foarte mari pentru ca sunt foarte multe operatii de efectuat.
Alte întrebări interesante