VasilM

1b_simple_digits

Dec 8th, 2012
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.40 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main() {
  6.     const int ten6 = 1000000;
  7.     int *simpleDigits = new int [ ten6 ], br = 0;
  8.  
  9.     for(int i = 0; i < ten6; i++ ) simpleDigits[i] = i;
  10.     simpleDigits[1] = 0;
  11.  
  12.     for(int i = 2; i < ten6; i++ )                          //
  13.         if( simpleDigits[i] !=0 )                           //
  14.             for(int j = i*2; j < ten6; j += simpleDigits[i] ) //
  15.                 simpleDigits[ j ] = 0;                      // нулиране <=> задраскване
  16.  
  17.     for(int i = 2; i < ten6; i++ ) {
  18.         if( simpleDigits[i] !=0 ) br++;
  19.         simpleDigits[i] = br;
  20.     }
  21.  
  22.     int brAB, xA, xB;
  23.     cin >> brAB;
  24.  
  25.     while( brAB-- ) {
  26.         cin >> xA >> xB;
  27.         cout << simpleDigits[xB] - simpleDigits[xA-1] << endl;
  28.     }
  29.  
  30.     delete [] simpleDigits;
  31.     return 0;
  32. }
  33. /*
  34. Задача 1b. Да се напише програма, която намира броя на простите числа в даден затворен интервал.
  35.  
  36. Вход:
  37. Първото число от входа е броят на примерите на входа. Следващите двойки числа  a и b задават интервала,
  38. в който ще се търси. Двете числа са цели, положителни,  a < b < 106.
  39.  
  40. Изход:
  41. За всеки пример от входа се извежда на отделен ред намерения брой.
  42.  
  43. Пример:
  44. 3
  45. 1 5
  46. 13 14
  47. 20 22
  48.  
  49. Решение на примера:
  50. 3
  51. 1
  52. 0
  53. */
Advertisement
Add Comment
Please, Sign In to add comment