fork(1) download
  1. #include <iostream>
  2. #include <conio.h>
  3. #include <ctime>
  4.  
  5. #include <cstdlib>
  6.  
  7.  
  8. using namespace std;
  9.  
  10. bool czypierwsza(int n)
  11. {
  12. bool wynik=true;
  13. int dzielnik=2;
  14. while (dzielnik*dzielnik<=n)
  15. {
  16. if ( n%dzielnik==0) wynik=false;
  17. dzielnik++; // jezeli liczba podzieli sie przez kolejne dzielniki zwracamy falsz (liczba nie jesy pierwsza)
  18. }
  19. return wynik;
  20. }
  21. void sito(bool *tab, unsigned int k)
  22. {
  23. for (int i=2; i*i<=k; i++) // przeszukuje kandydatow na pierwsze
  24. {
  25. if(!tab[i]) //jesli liczba jest pierwsza bo ma wartosc 0 w naszej tab
  26. for (int j = i*i ; j<=k; j+=i)
  27. tab[j] = 1; //wielokrotnosc pierwszych ustawiamy na 1
  28. }
  29. }
  30. int sumacyfr10(int n)
  31. {
  32. if(n>0)
  33. return n%10 + sumacyfr10(n/10);
  34.  
  35. return 0;
  36. }
  37. int sumacyfr2(int n)
  38. {
  39. if(n>0)
  40. return n%2 + sumacyfr2(n/2);
  41.  
  42. return 0;
  43. }
  44.  
  45. main ()
  46. {
  47. int liczba, licznik=0, licznik2=0, suma2=0;
  48. char wybor;
  49. bool *tab;
  50. clock_t start, end;
  51. double czas;
  52.  
  53. /* ofstream w1 ("1.txt");
  54.   ofstream w2 ("2.txt");
  55.   ofstream w3 ("3.txt"); */
  56. cout << "\t*******************************************************************\n"
  57. << "\t*** PROGRAM ZLICZA LICZY PIERWSZE Z PODANEGO PRZEDZIALU ***\n"
  58. << "\t*** DODATKOWO MOZE ROZWIAZAC DODATKOWE PROBLEMY ***\n"
  59. << "\t*** Liczba super B pierwsza to taka ktore spelnia 3 warunki: ***\n"
  60. << "\t*** - jest liczba pierwsza ***\n"
  61. << "\t*** - suma cyfr tej liczby jest rowniez liczba pierwsza ***\n"
  62. << "\t*** - suma cyfr w zapisie binarnym jest takze liczba pierwsza ***\n"
  63. << "\t*******************************************************************\n\n";
  64.  
  65. cout << "Podaj przedzial zamkniety, w ktorym bedziemy szukac liczb pierwszych" << "\n(poczatek i koniec przedzialu oddziel spacja, <2...100000>: ";
  66. int p, k, p2;
  67. cin >> p >> k;
  68. p2=p;
  69.  
  70.  
  71. do {
  72. cout << "\nCzy przy okazji wypisac wszystkie liczby pierwsze oddzielone spacjami? (t/n) ";
  73. cin >> wybor;
  74. }
  75. while (wybor!='t' & wybor!='T' & wybor!='n' & wybor!='N');
  76. if (p==2 & k<=100000 & k>p) {
  77. clock_t start, end;
  78. double czas_obl;
  79.  
  80. start=clock();
  81. tab = new bool [k];
  82. for (int i=2;i<=k;i++) tab[i]=0;
  83.  
  84. sito (tab, k);
  85.  
  86. for(int i=2;i<=k;i++)
  87. {
  88.  
  89. if(!tab[i]) {
  90. licznik++ ;
  91. if (wybor=='t' || wybor=='T')
  92. cout << i << " ";
  93. }
  94.  
  95. }
  96. end=clock();
  97. czas_obl=1.000*(end-start)/CLK_TCK; // czas wyznaczany jest w sekundach
  98.  
  99.  
  100. cout << "\nProblem rozostal rozwiazany za pomoca Sita Eratostenesa. Czas wykonywania to: " << czas_obl;
  101. // printf( "%.4fsek.", difftime( czasStop, czasStart ) );
  102.  
  103. }
  104. else {
  105. if (p>=2 & k<=100000 & k>p)
  106. {
  107. for (p;p<=k;p++)
  108. {
  109. if (czypierwsza (p)) {
  110. //if (czypierwsza ((sumcyfr (p, 10))) && czypierwsza ((sumcyfr (p,2))))
  111. licznik++;
  112. if (wybor=='t' || wybor=='T') cout << p << " ";
  113. }
  114. }
  115. cout << "\nProblem rozostal rozwiazany za pomoca algorytmu CzyPierwsza. Czas wykonywania to: ";
  116. }
  117. else cout << "Dane podane przez Ciebie sa nieprawidlowe!\n";
  118.  
  119.  
  120. }
  121. cout << "\nTakich liczb jest: " << licznik << "\n";
  122. cout << "\nDodatkowe zadania do rozwiazania.\n0) Zakoncz wykonywanie programu.\n"
  123. << "1) Sprawdz ile jest liczb super B pierwszych w tym przedziale.\n"
  124. << "2) Sprawdz ile jest liczb ktorych suma cyfr jest liczba pierwsza.\n"
  125. << "3) Sprawdz czy suma wszystkich liczb super B pierwszych jest liczba pierwsza.\n";
  126. int wybor2;
  127. cin >> wybor2;
  128. switch( wybor2 )
  129. {
  130. case 0:
  131. cout << "Koniec programu\n";
  132. break;
  133. case 1:
  134. {
  135. int spr1, spr2;
  136. int licznik2=0;
  137. for (p2;p2<=k;p2++) {
  138.  
  139. if (czypierwsza (p2) && czypierwsza (sumacyfr10 (p2)) && czypierwsza (sumacyfr2 (p2)))
  140. // cout << p2 << " ";
  141. licznik2++;
  142. }
  143. cout << "Liczb super B pierwszych jest: " << licznik2 << "\n";
  144. }
  145. break;
  146. case 2:
  147. for (p2;p2<=k;p2++)
  148.  
  149. if (czypierwsza (sumacyfr10 (p2))) licznik2++;
  150.  
  151.  
  152. cout << "Takich liczb jest: " << licznik2;
  153. break;
  154. case 3:
  155. for (p2;p2<=k;p2++)
  156. if (czypierwsza (p2)) suma2+=p2;
  157. if (czypierwsza (suma2)) cout << "TAK" << "\n";
  158. else cout << "NIE" << "\n";
  159. break;
  160. default:
  161. cout << "Wpisano zly argument!" << "\n";
  162. break;
  163. }
  164. getch();
  165.  
  166. //system ("pause");
  167. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:2:19: fatal error: conio.h: No such file or directory
 #include <conio.h>
                   ^
compilation terminated.
stdout
Standard output is empty