//Készítette:       Gregorics Tibor
//Dátum:            2009.01.24.
//Feladat:          Természetes szám prímosztóit felsoroló objektum típusa

#ifndef _PRIMDIVISOR_
#define _PRIMDIVISOR_

// Típusérték:      egy pozitív egész szám prímosztóit felsoroló objektum
// Reprezentáció:   int n az eredeti pozitív egész számnak olyan osztója, amelynek
//                  prímosztói (multiplicitásukkal együtt) azonosak az eredeti száméval,
//                  kivéve a megadott (int d) pozitív egész számnál kisebbeket
// Invariáns:       d az n legkisebb prímosztója vagy 1
// Műveletek:       PrimDivisor(int i) - i szám prímosztót felsoroló objektum létrehozása
//                  void First(), void Next(), bool End(), int Current()  - felsoroló műveletek
class PrimDivisor{
    private:
        int n, d;
        void lkpo();
    public:
        PrimDivisor(int i);
        void First();
        void Next();
        int Current() const { return d;}//Visszaadja az n szám legkisebb prímosztóját vagy egyet
        bool End() const { return n==1;}// Eldönti, van-e az n számnak prímosztója
};

#endif
