C Program két szám GCD-jének megkeresésére

Példák két egész szám GCD kiszámításának különféle módjaira (mind pozitív, mind negatív egész számokra) hurkok és döntéshozatali utasítások segítségével.

A példa megértéséhez ismernie kell a következő C programozási témákat:

  • C programozó operátorok
  • C a hurok számára
  • C ha … más nyilatkozat
  • C közben és csináld … míg a hurok

Két egész szám HCF vagy GCD a legnagyobb egész szám, amely pontosan el tudja osztani mindkét számot (maradék nélkül).

Sokféleképpen lehet megtalálni a legnagyobb közös osztót a C programozásban.

1. példa: GCD használata ciklushoz és if utasítás

 #include int main() ( int n1, n2, i, gcd; printf("Enter two integers: "); scanf("%d %d", &n1, &n2); for(i=1; i <= n1 && i <= n2; ++i) ( // Checks if i is factor of both integers if(n1%i==0 && n2%i==0) gcd = i; ) printf("G.C.D of %d and %d is %d", n1, n2, gcd); return 0; ) 

Ebben a programban a felhasználó által megadott két egész számot az forn1 és az n2 változóban tároljuk. Ezután a ciklust addig ismételjük, amíg i értéke n1 és n2 alatt lesz.

Minden egyes iterációban, ha n1 és n2 is pontosan osztható i-vel, i értékét a gcd-hez rendeljük.

A forciklus befejeztével két szám legnagyobb közös osztója kerül tárolásra a gcd változóban.

2. példa: GCD while ciklus és ha… más utasítás használata

 #include int main() ( int n1, n2; printf("Enter two positive integers: "); scanf("%d %d",&n1,&n2); while(n1!=n2) ( if(n1> n2) n1 -= n2; else n2 -= n1; ) printf("GCD = %d",n1); return 0; )

Kimenet

 Írjon be két pozitív egész számot: 81 153 GCD = 9

Ez jobb módja a GCD megtalálásának. Ebben a módszerben a kisebb egész számot kivonjuk a nagyobb egész számból, és az eredményt a nagyobb egész számot tartalmazó változóhoz rendeljük. Ezt a folyamatot addig folytatjuk, amíg n1 és n2 meg nem egyezik.

A fenti két program csak akkor működik rendeltetésszerűen, ha a felhasználó pozitív egész számokat ad meg. Itt van egy kis módosítás a második példán, hogy megtaláljuk a GCD-t pozitív és negatív egész számokra egyaránt.

3. példa: GCD pozitív és negatív számokhoz egyaránt

 #include int main() ( int n1, n2; printf("Enter two integers: "); scanf("%d %d",&n1,&n2); // if user enters negative number, sign of the number is changed to positive n1 = ( n1> 0) ? n1 : -n1; n2 = ( n2> 0) ? n2 : -n2; while(n1!=n2) ( if(n1> n2) n1 -= n2; else n2 -= n1; ) printf("GCD = %d",n1); return 0; )

Kimenet

 Írjon be két egész számot: 81 -153 GCD = 9

Rekurzióval is megkeresheti a GCD-t.

érdekes cikkek...