A) Zaimplementować algorytm (tzn. napisać kod źródłowy, skompilować i uruchomić odpowiedni
program) tworzący tablicę wszystkich liczb pierwszych mniejszych od 9999 i wykorzystujący
„sito Eratostenesa”. UWAGA: Liczb tych jest 1229.
B) Zaimplementować „zbrodniczy” algorytm wyznaczania największego wspólnego dzielnika
dwóch liczb naturalnych (polegający na rozkładzie obu liczb niezależnie na czynniki pierwsze,
a następnie pomnożeniu przez siebie wszystkich wspólnych czynników tych liczb).
„Wbudować” w algorytm mechanizmy zliczania wykonanych podczas realizacji obliczeń
dzieleń każdej z tych liczb przez liczby pierwsze będące elementami tablicy utworzonej
w punkcie A. Założyć, że liczby te nie będą przekraczały wartości 9999, lecz będą większe
od 999 (co oznacza czterocyfrową reprezentację tych liczb w systemie dziesiętnym. UWAGA:
Przy takim założeniu liczba czynników pierwszych dla każdej z liczb nie przekroczy 13-tu.
A więc wszystko mam, tylko nie rozumiem tego zdania
„Wbudować” w algorytm mechanizmy zliczania wykonanych podczas realizacji obliczeń
dzieleń każdej z tych liczb przez liczby pierwsze będące elementami tablicy utworzonej
w punkcie A.
i nie mogę przez to pójść dalej, czy jest ktoś w stanie pomóc?
#define MAX 9999
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <stdlib.h>
using namespace std;
bool tab[MAX];
int licznik_operacji=0, wybor;
int a,b=0;
void menu()
{
do {
cout << "Co wybierasz?"
"\n 1. Sito Eratostenesa" <<
"\n 2. NWD " << endl;
cin >> wybor;
cout << "Twoj wybor to " << wybor << endl;
cout << endl;
} while (wybor!=1 && wybor!=2 && wybor!=3);
}
void sitoEratostenesa()
{
for (int i=2;i<=MAX;i++)
tab[i]=true;
for (int i=2;i<=MAX;i++)
{
int w = i+i;
while (w<=MAX)
{
tab[w]=false; w+=i;
}
}
}
void wyswietlanieTablicy()
{
for(int i=2;i<=MAX;i++)
{
if(tab[i])
{
licznik_operacji++;
cout << i << "\t" << "\t";
}
}
}
int NWD(int a, int b)
{
while(a != b)
{
licznik_operacji++;
if(a > b)
a = a - b;
else
b = b - a;
}
}
void licznik()
{
cout << endl;
cout << "Licznik operacji: " << licznik_operacji << endl;
}
void wybierz()
{
switch(wybor)
{
case 1:
{
sitoEratostenesa();
wyswietlanieTablicy();
licznik();
break;
}
case 2:
{
cout << "Podaj dwie liczby" << endl;
cout << "Podaj a: ";
cin >> a;
cout << "Podaj b: ";
cin >> b;
cout << "Najwiekszy wspolny dzielnik ("<<a<<","<<b<<") = " <<NWD(a,b)<<endl;
break;
}
}
}
int main()
{
menu();
wybierz();
system("pause");
return 0;
}