Prolog

Guru

Obećava
Poruka
94
treba mi funkcija koja ispituje da li je neki broj prost. Za sada imam:

broj(2).
broj(X):-broj(Y), Y is X+1.
slozen(X):-broj(X), broj(Y), Y<X, not(X mod Y =\= 0), !.
prost(X):-not(slozen(X)).

ovaj kod nepogresivo detektuje proste brojeve ali ne tako sto odgovori Yes nego tako sto se zaglavi kada se postavi upit s prostim brojem. Problem je u tome sto kada ne uspe da zadovolji uslov Y<X on generise novo Y i tako u beskonacnost. Dakle treba mi da posle neuspeha uslova Y<X padne ceo iskaz, da se ne vrsi dalji back-tracking. nikako ne mogu da provalim ovaj problem, celo popodne se bakcem s njim i prilicno me nervira. mozda postavka resenja u osnovi nije dobra, vise nista nisam siguran.
 

Back
Top