Matura 2016 (maj). Zadanie 1. Liczby skojarzone
- dzielnikami 140 są 1, 2, 4, 5, 7, 10, 14, 20, 28, 35, 70, a ich suma wynosi 196 = 195+1.
- dzielnikami 195 są 1, 3, 5, 13, 15, 39, 65, a suma tych liczb równa jest 141 = 140+1.
Zadanie 1.1. (0–1)
a | b | dzielniki a (mniejsze od a) |
dzielniki b (mniejsze od b) |
suma dzielników a |
suma dzielników b |
skojarzone TAK/NIE |
78 | 64 | 1,2,3,6,13,26,39 | 1,2,4,8,16,32 | 90 | 63 | NIE |
20 | 21 | 1,2,4,5,10 | 1,3,7 | 23 | 12 | NIE |
75 | 48 | 1,3,5,15,25 | 1,2,3,4,6,8,12,16,24 | 49 | 76 | TAK |
Obliczenia:
Przykład 1.
a = 20;
Dzielniki a to: 1,2,4,5,10.
Suma dzielników: 1+2+4+5+10 = 22
b = 21;
Dzielniki b to: 1,3,7.
Suma dzielników: 1+3+7 = 11
Sprawdzenie:
a + 1 = suma dzielników b ?
21 ≠ 11
i
b + 1 = suma dzielników a ?
22 = 22
Przykład 2.
a = 75;
Dzielniki a to: 1,3,5,15,25.
Suma dzielników: 1+3+5+15+25 = 49
b = 48;
Dzielniki b to: 1,2,3,4,6,8,12,16,24.
Suma dzielników: 1+2+3+4+6+8+12+16+24 = 76
Sprawdzenie:
a + 1 = suma dzielników b ?
76 = 76
i
b + 1 = suma dzielników a ?
49 = 49
Zadanie 1.2. (0–4)
Dana jest liczba całkowita a większa od 1. Ułóż i zapisz w wybranej przez siebie notacji algorytm, który znajdzie i wypisze liczbę b skojarzoną z a lub komunikat „NIE”, jeśli taka liczba nie istnieje.
W zapisie algorytmu możesz korzystać tylko z następujących operacji arytmetycznych: dodawania, odejmowania, mnożenia, dzielenia całkowitego i obliczania reszty z dzielenia.
Uwaga:
Przy ocenie algorytmu będzie brana pod uwagę liczba operacji arytmetycznych wykonywanych przez Twój algorytm.
Specyfikacja: Dane: Liczba całkowita a > 1. Wynik: Liczba całkowita b skojarzona z a lub komunikat „NIE”, jeśli taka liczba nie istnieje.
Algorytm:
int main() { cout << "Zadnie 1. Matura 2016 - maj!" << endl; int a,b; cout << "Podaj a = "; cin >> a; cout << "Podaj b = "; cin >> b; int suma1 = 0; cout << " Dzielniki a: "; for (int i=1; i<a; i++) if ( a % i == 0 ) { cout << i << " "; suma1 += i; } cout << endl << " Suma dzilnikow = " << suma1 << endl;
int suma2 = 0;
cout << ” Dzielniki b: „;
for (int i=1; i<b; i++)
if ( b % i == 0 ) {
cout << i << ” „;
suma2 += i;
}
cout << endl << ” Suma dzielnikow = ” << suma2 << endl;
cout << ” Liczby skojarzone: „;
if (suma1==b+1 && suma2==a+1) cout << ” TAK ” << endl;
else cout << ” NIE ” << endl;
return 0;
}