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
Rayzen:
Si scurtezi jumatate din timp.
using namespace std;
int sumimpdiv(int x)
{ int d,s=0;
for(d=1;d<=x/2;d++)
{
if(x%d==0&&d%2==1)
s=s+d;
}
if(x%2 != 0) {s = s+x;}
return s;
}
int main()
{int x;
cin>>x;
cout<<sumimpdiv(x);
}
Răspunsuri la întrebare
Răspuns de
0
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;
}
#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;
}
Alte întrebări interesante
Geografie,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă