Algosy ćwiczenia nr1
Temat. Iterator
Interface Iterator
{
void first();
void last();
void next();
void previous();
boolean isDone();
Object current();
}
Fibonacci:
Fn = 1 for n<2 or F(n-1)+F(n-2) for n>=2
Class FibIter implements Iterator{
int kon, i, f, f1,f2;
boolean isDone()
{ return i>=kon; }
FibIter (int n)
{
kon=i=n;
}
FibIter (int n)
{
if (!isDone())
{
kon=n;
i=1;
f2=1;
}
void first()
{
f=0;
i=0;
f1=0;
}
void next ()
{
i++;
f2=f1;
f1=f;
f=f1+f2;
}
}
//liczby pierwsze
class PrimeIter implements Iterator{
int poc, kon, pier;
boolean isDone()
{ return pier>kon; }
PrimeIter (int poc; int kon)
{
this.poc=poc;
this.kon=kon;
pier=k+1;
}
boolean isPrime(int k)
{
if (k<4) return true;
else
{
int i=3;
while (i*i<k && k%i !=0)
i+=2;
return i*i>k;
}
}
void next()
{
pier++;
while (!isPrime(pier))
pier++
}
void first()
{
pier=poc-1;
while (!isPier(++pier));
}
//iterator co udostępnia kolejne dzielniki pierwsze
class DivIter implements Iterator{
int liczba, dz;
boolean isDone()
{ return liczba==1; }
DivIter (int k)
{
liczba=k;
dz=k+1;
}
void nextDiv()
{
while (k%dz!=0)
dz++;
}
void first ()
{
dz=2;
nextDiv();
}
void next()
{
k=k/dz;
if (k>1) nextDiv();
}
----koniec pierwszych ćwiczeń----