Advertisement
ivafinki

zad6 aud8 rekurzija nzd

Aug 10th, 2020
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. /******************************************************************************
  2. Задача 6
  3. Да се напише програма која што за дадена низа од природни броеви (која што
  4. се внесува од тастатура) ќе го отпечати најголемиот заеднички делител (НЗД)
  5. на нејзините елементи. Програмата задолжително треба да содржи
  6. рекурзивна функција за пресметување на НЗД на два природни броја.
  7.  
  8. Пример
  9. 48 36 120 72 84
  10. На екран треба да се отпечати:
  11. NZD na elementite na ovaa niza e 12}
  12. • НЗД за два броја може да се пресмета со користење на Евклидовиот
  13. алгоритам.
  14. • За да се пресмета НЗД на броевите m и n, се пресметува остатокот при
  15. делење на m со n.
  16. • ако остатокот не е 0, се пресметува остатокот при делење на n со m % n
  17. • постапката се повторува се додека се добиваат ненеулти остатоци
  18. • ако остатокот е 0, НЗД на двата броја е последниот пресметан ненулти
  19. остаток.
  20. *******************************************************************************/
  21. #include <stdio.h>
  22. #define MAX 100
  23. int NZD(int m, int n){
  24. if (!n) { //ako n ne e nekoj broj(ako n=0 vrati m)
  25. return m;
  26. }
  27. return NZD(n, m % n);
  28. }
  29. int main() {
  30. int i, n, a[MAX];
  31. printf("Vnesi ja goleminata na nizata: ");
  32. scanf("%d", &n);
  33. printf("Vnesi gi elementite na nizata: \n");
  34. for (i=0; i<n; ++i){
  35. scanf("%d", &a[i]);
  36. }
  37. int nzd = NZD(a[0], a[1]); //prvo barame nzd na prvite 2 elementi
  38. for (i=2; i<n; ++i){
  39. nzd = NZD(nzd, a[i]); //na toa nzd na prvite 2 elementi mu pravime nzd so sledniot element
  40. }
  41. printf("NZD na elementite od nizata e %d",nzd);
  42. return 0;
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement