Program C na vyhľadanie GCD dvoch čísel

Príklady rôznych spôsobov výpočtu GCD dvoch celých čísel (pre kladné aj záporné celé čísla) pomocou slučiek a rozhodovacích výrokov.

Aby ste pochopili tento príklad, mali by ste mať znalosti nasledujúcich tém programovania v jazyku C:

  • Operátori programovania C.
  • C pre slučku
  • C ak … iné vyhlásenie
  • C kým a robiť … zatiaľ čo Loop

HCF alebo GCD dvoch celých čísel je najväčšie celé číslo, ktoré dokáže presne rozdeliť obe čísla (bez zvyšku).

Existuje mnoho spôsobov, ako nájsť najväčšieho spoločného deliteľa v programovaní v jazyku C.

Príklad č. 1: GCD Použitie príkazu for loop a if

 #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; ) 

V tomto programe sú dve celé čísla zadané používateľom uložené v premenných forn1 a n2. Potom sa slučka iteruje, kým i je menšie ako n1 a n2.

Ak sú v každej iterácii čísla n1 a n2 presne deliteľné číslom i, hodnota i sa priradí gcd.

Keď je forslučka dokončená, najväčší spoločný deliteľ dvoch čísel je uložený v premennej gcd.

Príklad č. 2: GCD Použitie príkazu while a if… else

 #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; )

Výkon

 Zadajte dve kladné celé čísla: 81 153 GCD = 9

Toto je lepší spôsob, ako nájsť GCD. V tejto metóde sa menšie celé číslo odčíta od väčšieho celého čísla a výsledok sa priradí premennej, ktorá obsahuje väčšie celé číslo. Tento proces pokračuje, kým n1 a n2 nie sú rovnaké.

Vyššie uvedené dva programy fungujú zamýšľaným spôsobom, iba ak používateľ zadá kladné celé čísla. Tu je malá modifikácia druhého príkladu, ktorá slúži na nájdenie GCD pre celé aj kladné celé číslo.

Príklad č. 3: GCD pre kladné aj záporné čísla

 #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; )

Výkon

 Zadajte dve celé čísla: 81 -153 GCD = 9

Na vyhľadanie GCD môžete tiež použiť rekurziu.

Zaujímavé články...