U ovom programu naučit ćete pronaći GCD dva broja u Kotlinu. To se postiže pomoću petlje for i while uz pomoć if else izraza.
Da biste razumjeli ovaj primjer, trebali biste imati znanje o sljedećim temama programiranja Java:
- Java if … else Izjava
- Java za petlju
- Java while and do … while Loop
HCF ili GCD dviju cijelih brojeva najveći je cijeli broj koji može točno podijeliti oba broja (bez ostatka).
Primjer 1: Pronađite GCD dva broja pomoću naredbe for i if
public class GCD ( public static void main(String() args) ( int n1 = 81, n2 = 153, gcd = 1; for(int i = 1; i <= n1 && i <= n2; ++i) ( // Checks if i is factor of both integers if(n1 % i==0 && n2 % i==0) gcd = i; ) System.out.printf("G.C.D of %d and %d is %d", n1, n2, gcd); ) )
Izlaz
GCD od 81 i 153 je 9
Ovdje su dva broja čiji se GCD nalazi pohranjeni u n1, odnosno n2.
Zatim se for petlja izvršava dok i nije manji od n1 i n2. Na taj se način svi brojevi između 1 i najmanjeg od dva broja ponavljaju kako bi se pronašao GCD.
Ako su i n1 i n2 djeljivi s i, gcd se postavlja na broj. To traje sve dok ne pronađe najveći broj (GCD) koji dijeli i n1 i n2 bez ostatka.
Ovaj problem također možemo riješiti pomoću while petlje na sljedeći način:
Primjer 2: Pronađite GCD dva broja pomoću while petlje i if else izraza
public class GCD ( public static void main(String() args) ( int n1 = 81, n2 = 153; while(n1 != n2) ( if(n1> n2) n1 -= n2; else n2 -= n1; ) System.out.println("G.C.D = " + n1); ) )
Izlaz
GCD = 9
Ovo je bolji način za pronalaženje GCD-a. U ovoj se metodi manji cijeli broj oduzima od većeg, a rezultat se dodjeljuje varijabli koja sadrži veći cijeli broj. Taj se postupak nastavlja dok n1 i n2 ne budu jednaki.
Gornja dva programa rade kako je predviđeno samo ako korisnik unese pozitivne cijele brojeve. Evo male preinake drugog primjera kako bismo pronašli GCD i za pozitivne i za negativne cijele brojeve.
Primjer 3: GCD i za pozitivne i za negativne brojeve
public class GCD ( public static void main(String() args) ( int n1 = 81, n2 = -153; // Always set to positive n1 = ( n1> 0) ? n1 : -n1; n2 = ( n2> 0) ? n2 : -n2; while(n1 != n2) ( if(n1> n2) n1 -= n2; else n2 -= n1; ) System.out.println("G.C.D = " + n1); ) )
Izlaz
GCD = 9