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 pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, nu ezitați să ne contactați. Ne bucurăm să vă revedem și vă invităm să ne adăugați în lista de favorite!