Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /******************************************************************************
- Задача 6
- Да се напише програма која што за дадена низа од природни броеви (која што
- се внесува од тастатура) ќе го отпечати најголемиот заеднички делител (НЗД)
- на нејзините елементи. Програмата задолжително треба да содржи
- рекурзивна функција за пресметување на НЗД на два природни броја.
- Пример
- 48 36 120 72 84
- На екран треба да се отпечати:
- NZD na elementite na ovaa niza e 12}
- • НЗД за два броја може да се пресмета со користење на Евклидовиот
- алгоритам.
- • За да се пресмета НЗД на броевите m и n, се пресметува остатокот при
- делење на m со n.
- • ако остатокот не е 0, се пресметува остатокот при делење на n со m % n
- • постапката се повторува се додека се добиваат ненеулти остатоци
- • ако остатокот е 0, НЗД на двата броја е последниот пресметан ненулти
- остаток.
- *******************************************************************************/
- #include <stdio.h>
- #define MAX 100
- int NZD(int m, int n){
- if (!n) { //ako n ne e nekoj broj(ako n=0 vrati m)
- return m;
- }
- return NZD(n, m % n);
- }
- int main() {
- int i, n, a[MAX];
- printf("Vnesi ja goleminata na nizata: ");
- scanf("%d", &n);
- printf("Vnesi gi elementite na nizata: \n");
- for (i=0; i<n; ++i){
- scanf("%d", &a[i]);
- }
- int nzd = NZD(a[0], a[1]); //prvo barame nzd na prvite 2 elementi
- for (i=2; i<n; ++i){
- nzd = NZD(nzd, a[i]); //na toa nzd na prvite 2 elementi mu pravime nzd so sledniot element
- }
- printf("NZD na elementite od nizata e %d",nzd);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement