Răspuns :
Răspuns:
#include <iostream>
#include <fstream>
using namespace std;
int main ()
{
ofstream out("Perechi.txt");
int k, d1, d2, nrdiv1, nrdiv2, suma1, suma2, x1, x2, copiex1, copiex2;
cin >> k;
for (x1=2; x1<=k; x1++)
{
nrdiv1 = 2;
for (d1=2; d1<=x1/2; d1++)
if (x1%d1==0)
nrdiv1++;
copiex1 = x1;
suma1 = 0;
while (copiex1>0)
{
suma1 += copiex1%10;
copiex1 /= 10;
}
for (x2=x1+1; x2<=k; x2++)
{
nrdiv2 = 2;
for (d2=2; d2<=x2/2; d2++)
if (x2%d2==0)
nrdiv2++;
copiex2 = x2;
suma2 = 0;
while (copiex2>0)
{
suma2 += copiex2%10;
copiex2 /= 10;
}
if (nrdiv1==nrdiv2 && suma2%2==0 && suma1%2==0)
out << x1 << " " << x2 << endl;
}
}
return 0;
}
Explicație:
Am încercat să îl fac cât mai eficient posibil :)
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
ofstream f_out("perechi.txt");
int număr_divizori (int param) {
int ndiv = 2;
for (int div = 2; div <= sqrt(param); div++) {
if (!(param % div)) {
ndiv++;
if (param / div != div)
ndiv++;
}
}
return ndiv;
}
int sumă_cifre (int param) {
int sumă = 0;
while (param) {
sumă += param % 10;
param /= 10;
}
return sumă;
}
int main()
{
int număr;
cin >> număr;
for (int număr_aux = 2; număr_aux <= număr; număr_aux++)
if (!(sumă_cifre(număr_aux)%2))
for (int număr2_aux = număr_aux + 1; număr2_aux <= număr; număr2_aux++)
if (număr_divizori(număr2_aux) == număr_divizori(număr_aux) && !(sumă_cifre(număr2_aux) % 2))
f_out << număr_aux << ' ' << număr2_aux << '\n';
f_out.close();
return 0;
}
Vă mulțumim că ați vizitat site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Dacă aveți întrebări sau nevoie de asistență suplimentară, nu ezitați să ne contactați. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!