Ce este gresit la programul meu? Cerinta este: Programul citește de la tastatură numărul n. Programul afișează pe ecran numărul S, reprezentând suma divizorilor impari ai lui n. Date de intrare: 30; date de iesire: 24. Am construit programul, insa suma divizorilor mei impari imi iese 55 atunci cand rulez programul si nu inteleg de ce...Asta e programul meu:
#include
using namespace std;
int main()
{
int n;
cin>>n;
if(n!=1)
{
long long s=0;
for(int d=1; d*d<=n; d++)
{
if (d%2!=0)
{
if(n%d==0)
{
s+=d;
s+=n/d;
}
if(d*d==n)
s-=d;
}
}
cout<
}
else
cout<<1;
return 0;
}
Răspunsuri la întrebare
Răspuns de
1
Răspuns:
Sigur ai greșit ceva pe acolo. Corect ar fi:
int main()
{
int n, s = 0, i;
cin >> n;
for (i = 1; i <= n; i++)
if (n % i == 0 && n % 2 != 0) s += i;
cout << s;
}
Nu înțeleg de ce ai pus s+=n/d;
corinaruxandra34:
Multumesc!!
Alte întrebări interesante
Matematică,
8 ani în urmă
Istorie,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă