Gyakorlati alapok
Négyzetszámok listázása bekéretődzött felső határig
Ebben a fejezetben a megoldandó probléma a következő: listázzuk ki a
négyzetszámokat egy, a felhasználótól bekért felső
határig! A kiírási sorrend nem számít. A listát érthetően, jól olvashatóan formázzuk meg!
Ha listáznunk kell, akkor a motor legtöbbször egy
for
ciklus, jól beállított
feltételekkel.
Ugyanakkor négyzetszámoknak nevezzük az olyan eredményt, amely 2 azonos szám összeszorzásával keletkezik. A szabványos matematikai megfogalmazás mint mindig, most is rémes, de ha azt mondjuk, hogy hatványozás, akkor már minden bizonnyal közérthetőbb. Például 4 x 4 = 42 = 16 műveletben a négyzetszám a 16.
A négyzetszámokat csakis a bekért felső határig (int
border) kell listáznunk és ha alaposak
kívánunk lenni, akkor nemcsak azokat, hanem az alapszámokat (int
base) és a műveletet is
megjeleníthetjük. A trükk az, hogy a listát a bekért felső határ
négyzetgyökétől kell futtatnunk (int base =
(int)Math.sqrt(border)) és mivel a kiírási sorrend nem számít,
lehetséges visszafelé is. Ez egy visszafelé araszoló for ciklust
eredményez, amely csoszogás base = i értéktől
kezdődik és 1 értékig tart.
Nézzük meg a futtatható Java-kódot:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Kerem, hogy adja meg a felso hatart!");
int border = scanner.nextInt();
int base = (int)Math.sqrt(border);
System.out.println();
for(int i = base; i > 0; i--) {
int result = i * i;
System.out.println(result + ", mert "
+ result + " = " + i + " * " + i);
}
}
}
Végeredmény:
Kerem, hogy adja meg a felso hatart!
500
484, mert 484 = 22 * 22
441, mert 441 = 21 * 21
400, mert 400 = 20 * 20
361, mert 361 = 19 * 19
324, mert 324 = 18 * 18
289, mert 289 = 17 * 17
256, mert 256 = 16 * 16
225, mert 225 = 15 * 15
196, mert 196 = 14 * 14
169, mert 169 = 13 * 13
144, mert 144 = 12 * 12
121, mert 121 = 11 * 11
100, mert 100 = 10 * 10
81, mert 81 = 9 * 9
64, mert 64 = 8 * 8
49, mert 49 = 7 * 7
36, mert 36 = 6 * 6
25, mert 25 = 5 * 5
16, mert 16 = 4 * 4
9, mert 9 = 3 * 3
4, mert 4 = 2 * 2
1, mert 1 = 1 * 1