Cum se face problema 3? Help
Răspunsuri la întrebare
Răspuns:
#include <iostream>
using namespace std;
long long n;
long long sPar(long long a)
{
long long m=a;
int gasit=0;
if (m%2==1) ++m;
else m+=2;
do
{
long long s=0, d;
for (d=2; d*d<m; ++d)
if (m%d==0) { s=s+d+m/d; }
if (d*d==m) s+=d;
if (s%2==0) gasit=1;
else m+=2;
} while (!gasit);
return m;
}
int main()
{
cin >> n;
cout << sPar(n);
}
Explicație:
am luat tipul long long gin considerente ca numarul cautat fiind mai mare ca 10^9 poate intrece int (da, poate nu ar intrece ... :)))
variabila m care ia valoarea numarului trimis in subprogram o initializez la primul par mai mare ca a, facem suma divizorilor proprii si daca e para, am gasit, de nu marim m cu 2 si repetare a verificarii