fork download
  1. //sieve-н алгоритм
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4.  
  5. int n;
  6. bool Prime[2000000]; // Prime[i] нь i гэсэн тоо анхны тоо бол 0 үгүй бол 1
  7.  
  8.  
  9. int main() {
  10. cin >> n;
  11. Prime[1] = 1;
  12.  
  13. for(int i = 2; i*i <= n; i++) {
  14. if(Prime[i]) continue; // i тоо нь анхны тоо биш тул алгасна.
  15.  
  16. // i-д хуваагддаг дараачийн бүх тоонууд нь анхны тоо биш тул тэмдэглэнэ.
  17. for(int j = i+i; j <= n; j += i) {
  18. Prime[j] = 1;
  19. }
  20. }
  21.  
  22. for(int i = 1; i <= n; i++) {
  23. if(!Prime[i]) { // анхны тоо
  24. cout << i << " ";
  25. }
  26. }
  27. cout << endl;
  28.  
  29. return 0;
  30. }
Success #stdin #stdout 0s 17184KB
stdin
100
stdout
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97