Advertisement
BorjanCrvenkov

rekurzija zadaca 6

Dec 22nd, 2019
282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.86 KB | None | 0 0
  1. /*
  2. Да се напише програма која што за дадена низа од природни броеви (која што
  3. се внесува од тастатура) ќе го отпечати најголемиот заеднички делител (НЗД)
  4. на нејзините елементи. Програмата задолжително треба да содржи
  5. рекурзивна функција за пресметување на НЗД на два природни броја.
  6. 48 36 120 72 84
  7. На екран треба да се отпечати:
  8. NZD na elementite na ovaa niza e 12}
  9.  
  10. НЗД за два броја може да се пресмета со користење на Евклидовиот
  11. алгоритам.
  12. • За да се пресмета НЗД на броевите m и n, се пресметува остатокот при
  13. делење на m со n.
  14. • ако остатокот не е 0, се пресметува остатокот при делење на n со m % n
  15. • постапката се повторува се додека се добиваат ненеулти остатоци
  16. • ако остатокот е 0, НЗД на двата броја е последниот пресметан ненулти
  17. остаток.
  18. Пример
  19. NZD(20, 12)
  20. 20 % 12 = 8
  21. 12 % 8 = 4
  22. 8 % 4 = 0
  23. NZD(20, 12) = 4
  24.  
  25. */
  26.  
  27. #include <stdio.h>
  28.  
  29. int NZD(int m,int n){
  30. if(m%n==0){
  31. return n;
  32. }else if(m==0 && n==0){
  33. return 0;
  34. }
  35. else{
  36. return NZD(n,m%n);
  37. }
  38. }
  39.  
  40. int main()
  41. {
  42. int n;
  43. scanf("%d",&n);
  44. int niza[n];
  45. for(int i=0;i<n;i++){
  46. scanf("%d",&niza[i]);
  47. }
  48.  
  49. int nzd = NZD(niza[0],niza[1]);
  50. for(int i=2;i<n;i++){
  51. nzd = NZD(nzd,niza[i]);
  52. }
  53. printf("%d", nzd);
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement