GeoWikiCZ:Pískoviště: Porovnání verzí

Z GeoWikiCZ
Skočit na navigaci Skočit na vyhledávání
m
Řádek 1: Řádek 1:
<randomimage size="300" float="centre" choices="Grass-trento flooding1966.jpg|Grass-slovakia-3d.jpg" />
+
<source lang="cpp">
 +
#include <iostream>
 +
#include <vector>
  
<center>
+
typedef std::vector<int> Prvocisla;
<randomimage size="300" choices="Grass-trento flooding1966.jpg|Grass-slovakia-3d.jpg">
+
první obrázek|druhý obrázek
+
void erathosthenovo_sito(int N, Prvocisla& prvocisla);
</randomimage>
+
 +
int main()
 +
{
 +
  Prvocisla p;
 +
 +
  erathosthenovo_sito (100, p);
 +
 +
  for (Prvocisla::const_iterator i=p.begin(), e=p.end(); i!=e; ++i)
 +
      std::cout << *i << " ";
 +
 +
  std::cout << "\n";
 +
}
 +
 +
void erathosthenovo_sito(int N, Prvocisla& prvocisla)
 +
{
 +
  // nejprve vymazeme obsah vystupniho seznamu
  
23r23 2r 2 3e dv sd 4345 32
+
  prvocisla.clear();
</center>
+
  if (N <= 0) return;
 +
 +
  // Naplnim seznam kandidatu na prvocisla hodnotami od 1 do
 +
  // N. Protoze jsou standardni kontejnery indexovany od nuly,
 +
  // vytvorim kontejner o velikosti N+1 prvku a nulty prvek ignoruji
 +
 
 +
  // Poznamka: p[0] bude inicializovano na nulu, protoze se v
 +
  // sablonach pro datove cleny pouzivaji implicitni konstruktory a i
 +
  // zakladni ciselne typy jsou inicializovany na nulu, tj. napr. p[0]
 +
  // = int();
 +
 
 +
  Prvocisla p(N+1);
 +
  for (int i=2; i<=N; i++) p[i] = i;
 +
 +
  // nyni prochazim seznam prvocisel. V seznamu kandidatu oznacim vzdy
 +
  // vsechny nasobky kazdeho prvocisla nulou (nejsou to prvocisla)
 +
 +
  for (int i=2; 2*i<=N; i++)
 +
    if (p[i] != 0)
 +
      {
 +
        int k = 2*i;
 +
        while (k <= N)
 +
          {
 +
            p[k] = 0;
 +
            k += i;
 +
          }
 +
      }
 +
 +
  // Zkopirujeme vsechna nalezena prvocisla do vystupnho seznamu
 +
 +
  for (int i=2; i<=N; i++)
 +
    if (p[i])
 +
      prvocisla.push_back(i);
 +
 +
}
 +
</source>

Verze z 20. 4. 2008, 21:32

#include <iostream>
#include <vector>

typedef std::vector<int> Prvocisla;
 
void erathosthenovo_sito(int N, Prvocisla& prvocisla);
 
int main()
{
  Prvocisla p;
 
  erathosthenovo_sito (100, p);
 
  for (Prvocisla::const_iterator i=p.begin(), e=p.end(); i!=e; ++i)
      std::cout << *i << " ";
 
  std::cout << "\n";
}
 
void erathosthenovo_sito(int N, Prvocisla& prvocisla)
{
  // nejprve vymazeme obsah vystupniho seznamu

  prvocisla.clear();
  if (N <= 0) return;
 
  // Naplnim seznam kandidatu na prvocisla hodnotami od 1 do
  // N. Protoze jsou standardni kontejnery indexovany od nuly,
  // vytvorim kontejner o velikosti N+1 prvku a nulty prvek ignoruji
   
  // Poznamka: p[0] bude inicializovano na nulu, protoze se v
  // sablonach pro datove cleny pouzivaji implicitni konstruktory a i
  // zakladni ciselne typy jsou inicializovany na nulu, tj. napr. p[0]
  // = int();
   
  Prvocisla p(N+1);
  for (int i=2; i<=N; i++) p[i] = i;
 
  // nyni prochazim seznam prvocisel. V seznamu kandidatu oznacim vzdy
  // vsechny nasobky kazdeho prvocisla nulou (nejsou to prvocisla)
 
  for (int i=2; 2*i<=N; i++)
    if (p[i] != 0)
      {
        int k = 2*i;
        while (k <= N)
          {
            p[k] = 0;
            k += i;
          }
      }
 
  // Zkopirujeme vsechna nalezena prvocisla do vystupnho seznamu
 
  for (int i=2; i<=N; i++)
    if (p[i])
      prvocisla.push_back(i);
 
}