You are on page 1of 2

Zadatak: Ka emo da su prirodni brojevi a i b prijateljski ako je zbroj svih djelitelja bro ja a strogo manjih od broja a jednak broju

b, a zbroj svih djelitelja broja b strogo manjih od b jednak broju a. Napi ite program koji ucitava dva prirodna broja m i n, m < n, i ispisuje sve par ove prijateljskih brojeva (a, b) takvih da je m<=a, b<=n. Svaki par treba ispisati tocno jednom. Evo ga, rije io sam i to, uz puno muke u ovo doba Sada me zanima je li mi tocan? Imam osjecaj, iako mi izbaci tocno rije enje za pr imjer iz samog zadatka, tj. za m=100 i n=300 => a=220,b=284, da mi zadatak nije skroz tocan. Prvo mi je ispisivao za zadani primjer (220,284) i (284,220) pa sam i to rije io i evo to sam dobio: Kod: #include<stdio.h> int main(void) { int m,n,a,b,djeljitelj=1,zbroja=0,zbrojb=0; scanf("%d %d",&m,&n); for(a=m;a<=n;a++) { while(djeljitelj<a) { if(a%djeljitelj==0) zbroja+=djeljitelj; djeljitelj++; } djeljitelj=1; if (zbroja>=m && zbroja<=n) { b=zbroja; while(djeljitelj<b) { if(b%djeljitelj==0) zbrojb+=djeljitelj; djeljitelj++; } if (zbrojb==a && a<b) printf("(%d,%d)",a,b); djeljitelj=1; } zbroja=zbrojb=0; } return 0; } Ref. "prijateljski brojevi" by Zenon... Cini mi se ok, ovako napamet. Postoji li neki posebni razlog da toliko ne volis for-petlju? Ova dva while-a i maju i inicijalizaicju i inkrement, pa bi for, po meni, bio puno prirodniji. Takodjer, preporucam inicijalizacije raditi na pocetku, a ne na kraju koraka. P reglednije je, a vjerojatno se zelis moci snalaziti u svojim programima i kad po stanu opsezniji. Evo tvog programa, preradjenog prema tim dvjema uputama (i malo smanjen broj va rijabli): Kod: #include<stdio.h> int main(void) { int m, n, a, b, djelitelj, a2;

scanf("%d %d",&m,&n); for(a = m; a <= n; a++) { b = a2 = 0; for (djelitelj = 1; djelitelj < a; djelitelj++) if (a % djelitelj == 0) b += djelitelj; if (b >= m && b <= n) { for (djelitelj = 1; djelitelj < b; djelitelj++) if (b % djelitelj == 0) a2 += djelitelj; if (a2 == a && a < b) printf("(%d,%d)\n", a, b); } } return 0; }

You might also like