Cześć,
jestem nowicjuszem i mam taki problem, ponieważ za zadanie miałem wyznaczyć pary liczb, w których zachodzi warunek:
a == sumaDzielnikow(b) && b == sumaDzielnikow(a) && a != b
Problem pojawia się w koniunkcji, konkretnie dla a=3
, b=4
(i innych także) albowiem w moim programie widać, jakoby PRAWDA && FAŁSZ && PRAWDA
miałoby mi dawać prawdę. Mam nadzieję, że program dokładniej wyjaśnia o co mi dokładnie chodzi:
#include <iostream>
using namespace std;
int sumaDzielnikow(int n) {
int suma;
for(int i=n-1; i>0; i--) {
if(n%i==0)
suma+=i;
}
return suma;
}
void przyjazn(int n) {
for(int a=1; a<=n; ++a) {
for(int b=n; b>0; --b) {
if(a == sumaDzielnikow(b) && b == sumaDzielnikow(a) && a != b)
cout << a << " i " << b << " sa zaprzyjaznione" << " a: " << a << " b: " << b << " suma dziel a= " << sumaDzielnikow(a) << " suma dziel b=" << sumaDzielnikow(b) << endl;
else
cout << a << " " << b << " a: " << a << " b: " << b << " suma dziel a= " << sumaDzielnikow(a) << " suma dziel b=" << sumaDzielnikow(b) << endl;
}
}
}
int main()
{
if ( 3 == sumaDzielnikow(4) && 4 == sumaDzielnikow(3) && 3 != 4) // dlaczego prawda,fałsz,prawda to prawda???
cout << "prawda";
else
cout << "falsz";
if ( 4 == sumaDzielnikow(3) && 3 != 4)
cout << "prawda";
else
cout << "falsz";
cout << endl << 3 << "=?" << sumaDzielnikow(4) << endl << 4 << "=?" << sumaDzielnikow(3) << endl;
przyjazn(4);
}