Informatică, întrebare adresată de Miercuri2002, 8 ani în urmă

376 pbinfo, doar 90 de puncte, de ce? Raspunsul care imi explica primeste coroana.

Cerinţa
Se citește un număr natural n. Să se determine suma divizorilor săi.

Date de intrare
Programul citește de la tastatură numărul n.

Date de ieşire
Programul afișează pe ecran numărul S, reprezentând suma divizorilor lui n.

Restricţii şi precizări
0 < n ≤ 1.000.000.000

#include
#include
#include
using namespace std;

int main()
{
long n,d,s=0;
cin>>n;
if(n==0)
{
cout<<1;
return 0;
}
for(d=1;d<=sqrt(n);d++)
if(n%d==0)
{s+=d;
if(n/d>d)
s+=n/d;}
cout< }


algo: i ul
Miercuri2002: daca il incep de la 2 imi da 0 puncte :)
algo: xdd
algo: atunci nush
algo: ai tot codu?
algo: sa - mi - l dai
Miercuri2002: Pai tot acesta din intrebare, adica:
#include
#include
#include
using namespace std;

int main()
{
long n,d,s=0;
cin>>n;
if(n==0)
{
cout<<1;
return 0;
}
for(d=1;d<=sqrt(n);d++)
if(n%d==0)
{s+=d;
if(n/d>d)
s+=n/d;}
cout<}
Miercuri2002: librariile fiind in ordine:
1 iostream
2 iomanip
3 cmath

desi nu cred ca aveam nevoie de ele
algo: pt ce folosesti iomanip
Miercuri2002: am folosit acum ceva vreme o functie din el, dar nu cred ca mai am nevoie de el acum. ma rog, nu afecteaza raspunsul oricum

Răspunsuri la întrebare

Răspuns de mocanualexandrp2ikb6
0

#include <iostream>

#include<cmath>

using namespace std;

int n,i;

long long s;

int main()

{

   cin>>n;

   for(i=1;i<=sqrt(n);i++)

   if(n%i==0)

   { s+=i;

   if(n/i>i)

   s+=n/i;

   }

   cout<<s;

   return 0;

}

Alte întrebări interesante