12tqian's Competitive Programming Library

This documentation is automatically generated by online-judge-tools/verification-helper

View the Project on GitHub 12tqian/cp-library

:heavy_check_mark: library/number-theory/sieve.hpp

Verified with

Code

#pragma once

template <int SZ> struct Sieve {
	std::bitset<SZ> pri;
	std::vector<int> pr;
	
	Sieve() {
		pri.set();
		pri[0] = pri[1] = 0;
		for (int i = 4; i < SZ; i += 2) {
			pri[i] = 0;
		}
		for (int i = 3; i * i < SZ; i += 2) {
			if (pri[i]) {
				for (int j = i * i; j < SZ; j += 2 * i) {
					pri[j] = 0;
				}
			}
		}
		for (int i = 0; i < SZ; i++) {
			if (pri[i]) {
				pr.push_back(i);
			}
		}
	}
};
template <int SZ> struct Sieve {
	std::bitset<SZ> pri;
	std::vector<int> pr;
	
	Sieve() {
		pri.set();
		pri[0] = pri[1] = 0;
		for (int i = 4; i < SZ; i += 2) {
			pri[i] = 0;
		}
		for (int i = 3; i * i < SZ; i += 2) {
			if (pri[i]) {
				for (int j = i * i; j < SZ; j += 2 * i) {
					pri[j] = 0;
				}
			}
		}
		for (int i = 0; i < SZ; i++) {
			if (pri[i]) {
				pr.push_back(i);
			}
		}
	}
};
Back to top page