Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <conio.h>
- #include <fstream>
- #include <windows.h>
- #include <sys/time.h>
- using namespace std;
- void fileOut(string, bool*, long long);
- void consoleOut(bool*, long long);
- void p(char, short = 0, short = 0, bool = true);
- void color(short=0);
- int main()
- {
- color();
- cout<<"Do jakiej liczby mam szukac liczb pierwszych?\n";
- long long a, mem;
- MEMORYSTATUSEX memory;
- memory.dwLength=sizeof(memory);
- GlobalMemoryStatusEx(&memory);
- mem=memory.ullAvailPhys;
- do{
- cin>>a;
- if(a>(mem - 100*1024*1024))
- {
- color(1);
- cout<<"Zostaw te 100MB wolnego RAMu...\nPodaj liczbe nie wieksza niz "<<mem -(100*1024*1024)<<"\n";
- color();
- }
- }while(a>(mem -100*1024*1024));
- cout<<"\nGdzie mam wypisac wynik?\n1 - w konsoli\n2 - do pliku *.txt\n3 - do pliku i w konsoli\n";
- int wybor;
- cin>>wybor;
- string name;
- if(wybor==2 || wybor==3)
- {
- cout<<"Podaj nazwe pliku (bez rozszerzenia).\n";
- color(1);
- cout<<"-->Uwaga! Jezeli plik o podanej nazwie juz istnieje zostanie nadpisany i stracisz dane!<--\n";
- color(0);
- cin>>name;
- name+=".txt";
- cout<<endl;
- }
- p('t', 6, 0, false);
- bool* tab=new bool[a];
- for(long long i=0;i<a;i++)
- tab[i]=true;
- p('t');
- p('l', 2, 0, false);
- for(long long i=2;i*i<a;i++)
- {
- if(!tab[i])
- continue;
- for(long long j=2*i;j<a;j+=i)
- tab[j]=false;
- }
- p('l');
- switch(wybor)
- {
- case 1: p('p', 5, 4, false); consoleOut(tab, a); p('p'); break;
- case 2: p('p', 5, 0, false); fileOut(name, tab, a); p('p'); break;
- case 3:
- default: p('p', 5, 4, false); fileOut(name, tab, a); consoleOut(tab, a); p('p');
- }
- p('u', 6, 0, false);
- delete[] tab;
- cout<<"\nSkonczylem\nNacisnij dowolny klawisz aby zakonczyc dzialanie programu";
- getch();
- return 0;
- }
- void fileOut(string name, bool* tab, long long size)
- {
- fstream file(name.c_str());
- file.open(name.c_str(), ios::out | ios::app);
- for(long long i=2;i<size;i++)
- if(tab[i])
- file<<i<<"\n";
- file.close();
- }
- void consoleOut(bool* tab, long long size)
- {
- for(long long i=2;i<size;i++)
- if(tab[i])
- cout<<i<<"\t";
- cout<<endl;
- }
- void p(char a, short l1, short l2, bool x)
- {
- string napis;
- switch(a)
- {
- case 'l':napis="Licze...\n";break;
- case 'p':napis="Pisze...\n";break;
- case 't':napis="Przygotowuje tablice...\n";break;
- case 'u':napis="Usuwam tablice...\n";break;
- }
- timeval czas;
- static double dTime1, dTime2;
- if(!x)
- {
- color(l1);
- cout<<napis;
- color(l2);
- gettimeofday(&czas, NULL);
- dTime1 = czas.tv_sec+(czas.tv_usec/1000000.0);
- }
- if(x)
- {
- color();
- cout<<"Zajelo mi to ";
- color(1);
- gettimeofday(&czas, NULL);
- dTime2 = czas.tv_sec+(czas.tv_usec/1000000.0);
- cout<<dTime2-dTime1<<" sekund[e/y]\n";
- }
- }
- void color(short color)
- {
- HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);
- switch(color)
- {
- case -6: SetConsoleTextAttribute(handle, FOREGROUND_RED | FOREGROUND_BLUE);break;
- case -5: SetConsoleTextAttribute(handle, FOREGROUND_GREEN | FOREGROUND_BLUE);break;
- case -4: SetConsoleTextAttribute(handle, FOREGROUND_RED | FOREGROUND_GREEN);break;
- case -3: SetConsoleTextAttribute(handle, FOREGROUND_BLUE);break;
- case -2: SetConsoleTextAttribute(handle, FOREGROUND_GREEN);break;
- case -1: SetConsoleTextAttribute(handle, FOREGROUND_RED);break;
- case 0: SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);break;
- case 1: SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);break;
- case 2: SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_GREEN);break;
- case 3: SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_BLUE);break;
- case 4: SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);break;
- case 5: SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_BLUE);break;
- case 6: SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE);break;
- default: SetConsoleTextAttribute(handle, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment