Hej ,to mój kolejny post związany z programem wyznaczającym liczby pierwsze ,są one wypisywane w kolorze zielonym a reszta normalnie . Napisałem ten post bo chciał bym się zapytać o jakość kodu oraz jakie według was mogę wprowadzić jeszcze poprawki . Mam też pytanie czy można napisać taki algorytm sposobem rekurencyjnym ?.
Jestem dość kiepski w opracowywaniu algorytmów więc będę wdzięczny za wszelkie komentarze i rady . A oto kod :
#include <iostream>
#include <vector>
#include <windows.h>
#include <conio.h>
using namespace std;
vector<int>primeN;
void colors_classic(){
HANDLE hOut;
hOut = GetStdHandle( STD_OUTPUT_HANDLE );
SetConsoleTextAttribute( hOut, FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_INTENSITY );
}
void colors_prime(){
HANDLE hOut;
hOut = GetStdHandle( STD_OUTPUT_HANDLE );
SetConsoleTextAttribute( hOut, FOREGROUND_GREEN | FOREGROUND_INTENSITY );
}
void prime_numbers(int counter)
{
if(counter==1)
{
colors_classic();
cout<<counter<<" ";
}
if(counter==2)
{
colors_prime();
primeN.push_back(counter);
cout<<counter<<" ";
}
else
{
int mod;
for(int i=primeN.size()-1; i>=0; i--)
{
mod = counter%primeN[i];
if(mod==0)
{
colors_classic();
cout<<counter<<" ";
break;
}
}
if(mod==1)
{
colors_prime();
cout<<counter<<" ";
primeN.push_back(counter);
}
}
}
void algorithm_loop()
{
colors_classic();
int n = 0;
int counter = 0;
cout<<"podaj zakres : ";
cin>>n;
cout<<endl;
while(counter!=n)
{
counter++;
prime_numbers(counter);
}
colors_classic();
}
int main()
{
algorithm_loop();
getch();
return 0;
}