Professional Documents
Culture Documents
Algorytmy Maturalne cz1
Algorytmy Maturalne cz1
Zawartość
Fibonacci iteracyjnie ................................................................................................................................ 2
Fibonacci rekurencyjnie........................................................................................................................... 2
NWD iteracyjnie poprzez odejmowanie.................................................................................................. 2
NWD rekurencyjnie poprzez odejmowanie ............................................................................................ 2
NWD iteracyjnie poprzez dzielenie ......................................................................................................... 3
NWD rekurencyjnie dzielenie .................................................................................................................. 3
Opisz samodzielnie .................................................................................................................................. 3
Potęga iteracyjnie .................................................................................................................................... 4
Potęga rekurencyjnie............................................................................................................................... 4
Potęga iteracyjnie – szybkie potęgowanie .............................................................................................. 4
Potęga rekurencyjnie – szybkie potęgowanie ......................................................................................... 4
Silnia iteracyjnie ...................................................................................................................................... 5
Silnia rekurencyjnie ................................................................................................................................. 5
Czy pierwsza iteracyjnie .......................................................................................................................... 5
Sito Eratostenesa ..................................................................................................................................... 6
Dzielniki powoli a dokładnie .................................................................................................................... 6
Dzielniki trochę szybciej .......................................................................................................................... 6
Dzielniki szybko ale niedokładnie ............................................................................................................ 6
Rozkład liczby na czynniki pierwsze ........................................................................................................ 7
Rozkład liczby na cyfry iteracyjnie ........................................................................................................... 7
Rozkład liczby na cyfry rekurencyjnie...................................................................................................... 7
Zmiana systemu z DEC na inny o podstawie p (1<p<10) ......................................................................... 7
Wyszukiwanie binarne ............................................................................................................................ 8
Fibonacci iteracyjnie
void f(int n)
{
long long a = 0, b = 1;
for(int i=0;i<n;i++)
{
cout<<b<<" ";
b += a;
a = b-a;
}
}
Fibonacci rekurencyjnie
int f(int n)
{
if(n<3)
return 1;
return f(n-2)+f(n-1);
}
return a;
}
Opisz samodzielnie
int f(int a, int b)
{
while(b)
swap(a %= b, b);
return a;
}
Potęga iteracyjnie
int f(int a,int b)
{
int w=1;
while(b--)
w*=a;
return w;
}
Potęga rekurencyjnie
int f(int a,int b)
{
if (b==0)return 1;
return a*f(a,--b);
}
Silnia rekurencyjnie
int f(int n)
{
if(n<2) return 1;
return n*f(n-1);
}
for(int i=2;i*i<=n;i++)
if(n%i==0)
return false; //gdy znajdziemy dzielnik, to dana liczba nie jest
pierwsza
return true;
}
Sito Eratostenesa
void f(bool *tab, unsigned int n)
{
for (int i=2; i*i<=n; i++) //przeszukujemy kolejnych kandydatów na pierwsze
{ //wystarczy sprawdzić do pierwiastka z n
// i<=sqrt(n) - podnosząc do kwadratu mamy
// i*i <= n
if(!tab[i]) //jesli liczba jest pierwsza(ma wartosc 0)
for (int j = i*i ; j<=n; j+=i) //to wykreslamy jej wielokrotnosci
tab[j] = 1; //ustawiając wartosć na 1
}
}
if(tab[sr] == x)
return sr; //zwracamy indeks znalezionego elementu
if(tab[sr] > x)
p = sr - 1;
else
l = sr + 1;
}