- Да се најде НЗД (најголем заеднички делител) за внесени два природни броеви а и b со Евклидов алгоритам.
Евклидовиот алгоритам е заснован
на принципот дека НЗД на бројот не се
менува ако помалиот број се одземе од
поголемиот, а потоа се одреди НЗД на
новодобиениот број и помалиот од
претходните два. На пример, 21 е НЗД за
252 и 105 (252=21×12; 105=21×5); бидејќи 252−105=147, НЗД
за 147 и 105 е исто така 21. Со повторување
на постапката ќе се добиваат се помали
броеви, се додека еден од броевите не
се сведе на 0.
Евклидовиот
алгоритам е од итеративна природа, што
значи дека крајниот резултат ќе се добие
во низа чекори, а меѓурезултатот од
претходниот чекор се користи во првиот
следен чекор.
Решение:
#include <iostream>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
while ( a!= b )
{
if (a>b)
a -= b;
else
b -= a;
}
cout<<a;
return 0;
}
- Да се најде НЗС (најмалиот заеднички содржател) за внесени два природни броеви а и b.
Ако а и b не се и
двата еднакви на 0, НЗС може да се пресмета
по формулата
НЗС=a*b/НЗД
Ако ја искористиме
претходната задача, ќе го добиеме
следното решение:
#include <iostream>
using namespace std;
int main()
{
int a,b,nzs;
cin>>a>>b;
if ((a==0)&&(b==0))
nzs=0;
else
{
nzs=a*b;
while ( a!= b )
{
if (a>b)
a -= b;
else
b -= a;
}
nzs/=a;
}
cout<<nzs;
return 0;
}
3.
Да се пресмета n-тиот член на Фибоначиевата
низа.
Ознака на членот
во низата: F1 F2 F3 F4 F5 F6 F7.....
Фибоначиева низа: 1 1 2 3 5 8 13.....Секој нареден член во низата се добива по формулата: Fn=Fn-1 + Fn-2
Решение:
#include <iostream>
using namespace std;
int main()
{
int n,f1,f2,fn,i;
cout<<"Koj clen na Fibonacievata niza sakas da go presmetas ";
cin>>n;
f1=1; f2=1;
if ((n==1)||(n==2))
fn=1;
else
for(i=3;i<=n;i++)
{
fn=f1+f2;
f1=f2;
f2=fn;
}
cout<<endl<<n<<" - tiot clen na Fibonacievata niza e "<<fn;
return 0;
}
- Изработка на програми со
сите претходно изучени техникиЗа даден
број n да се провери дали е совршен број.
Бројот н е совршен ако е еднаков на збирот на сите негови делители, со исклучок на самиот број. На пример, 6=1+2+3, значи бројот 6 е совршен број.
Решение:
#include <iostream>
using namespace std;
int main()
{
int n,i,zbir ;
cout<<"Vnesi go brojot za koj sakas da proveris dali e sovrsen ";
cin>>n;
zbir = 0;
for (i = 1; i <= n/2; i++)
if (n % i == 0)
zbir += i;
if (n == zbir)
cout<<endl<<"Brojot "<<n<<" e sovrsen.";
else
cout<<endl<<"Brojot "<<n<<" ne e sovrsen.";
return 0;
}