static void sieve(int n) {
set s;
for (int i = 2; i <= n; i++)
s.insert(i);
for (set::iterator p = s.begin(); p != s.end(); p++)
for (int i = (*p)*2; i <= n; i += *p)
s.erase(i);
copy(s.begin(), s.end(), ostream_iterator(cout, " "));
cout << "\n";
}
static void hist(const set<double> & ds, int n) {
if (ds.size() < 1) return;
const double
min = *(ds.begin()),
max = *--ds.end(),
range = (max + 0.1) - min,
subrange = range/((double) n);
vector<set<double> > buckets(n);
for (int i = 0; i < n; i++)
buckets.push_back(set<double>());
for (set<double>::iterator i = ds.begin(); i != ds.end(); i++)
buckets[(int) ((*i)/subrange)].insert(*i);
}
This page last modified on 25 July 2000.