Która to matura jest?
BTW. Zdajesz sobie sprawę, że jest dopuszczona na maturze Java? Tylko twoja szkoła musi to zaakceptować.
Postaram się omówić pokrótce to zadanie.
a) Ile jest wierszy, w których jedna z występujących tam liczb jest wielokrotnością
tej drugiej?
W tym zdaniu oznacza, że jedna liczba musi się dzielić bez reszty przez drugą. W tym celu służy operator modulo (reszta z dzielenia) zapisywany za pomocą symbola %.
Przykład co to jest moduło:
5 % 2 = 1
10 % 5 = 0
22 % 10 = 2
Gdy chcemy sprawdzić, czy liczba jedna liczba jest wielokrotnością drugiej wystarczy sprawdzić, czy da się podzielić bez reszty zatem
20 50
Obliczenia
20 % 50 = 20 nie dzieli się bez reszty
50 % 20 = 10 nie dzieli się bez reszty
Wystarczy, że a % b wynosiło 0 lub b % a wynosiło 0, aby spełnić założenia zadania. Jedna dzieli się bez reszty przez drugą.
-------------------------
b) Ile jest wierszy zawierających pary liczb względnie pierwszych, czyli takich, których
największy wspólny dzielnik tych liczb równa się 1?
Do tego rozwiązania tego zadania należy wiedzieć co to są liczby względnie pierwsze.
Za wikipedią:
Liczby względnie pierwsze – liczby całkowite, które nie mają innych poza jedynką wspólnych dzielników w rozkładzie na czynniki pierwsze lub, równoważnie, ich największym wspólnym dzielnikiem jest jedność; te, w których żadna para nie ma wspólnych dzielników w rozkładzie poza jedynką lub, równoważnie, których
największy wspólny dzielnik dla dowolnej pary wynosi jeden
, nazywa się parami względnie pierwszymi.
Algorytmów obliczania NWD jest wiele. Niektóre z nich wrzucam ci tutaj : Wklej.to - po prostu wklej to! - paste: L3kJf (Java)
Najprostszy do wytłumaczenia wydaje mi się ten nazwany WithDivision.
public int calc(int a, int b) {
while (a != b) {
if(a > b) {
a = a - b;
}else{
b = b - a;
}
}
return a;
}
W tym algorytmie po prostu odejmujemy próbujemy zrównać z sobą dwie liczby odejmując od większej mniejsza.
Przykładowo przebieg liczb dla 55 6
55 6
49 6
43 6
37 6
31 6
25 6
19 6
13 6
7 6
1 6
1 5
1 4
1 3
1 2
1 1
czyli jest to liczba względnie pierwsza, ponieważ nwd wynosi 1
25 10
15 10
5 10
5 5
czyli nie jest to liczba względnia pierwsza, ponieważ nwd wynosi 5
-------------------------
c) Ile jest wierszy, dla których suma cyfr pierwszej liczby jest równa sumie cyfr
drugiej liczby?
Tutaj musimy wykonywać trzy operacje w pętli.
1 - odczytywanie liczby pojedynczej - najwygodniej jedności.
Do tego posłuży operator modulo z 10 (w takim systemie są zapisane liczby)
jednosc = a % 10;
Przykład
105 % 10 = 5
100 % 10 = 0
1 % 10 = 1
2 - kasować jedną liczbę, czyli dzielić♥przez 10, co powoduje "przesunięcie przecinka" w prawo, lecz my nie zapisujemy wartości po przecinku, bo operujemy na int
a /=10;
123456 / 10 = 12345
12345 / 10 = 1234
1234 / 10 = 123
123 / 10 = 12
12 / 10 = 1
3 - sumować liczby z operacji pierwszej.
suma +=jednosc
Kod wynikowy
public static int calc(int a) {
int suma = 0;
while (a > 10) {
int jednosc = a % 10; // Operacje 1
a /= 10; // Przesuniecie liczby
suma +=jednosc; // Dodanie liczby do ogolnej sumy
}
return suma;
}