fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long int ll;
  4.  
  5. const ll MAXN = 1000000;
  6.  
  7. vector<ll> spf(MAXN + 1); // spf[i] will store the smallest prime factor of i
  8.  
  9. void computeSPF() {
  10. // Initialize spf for every number to itself
  11. for (ll i = 2; i <= MAXN; i++) {
  12. spf[i] = i;
  13. }
  14.  
  15. // Start the sieve process
  16. for (ll i = 2; i * i <= MAXN; i++) {
  17. if (spf[i] == i) { // Check if i is prime
  18. for (ll j = i * i; j <= MAXN; j += i) {
  19. if (spf[j] == j) { // Update spf[j] to the smallest prime factor
  20. spf[j] = i;
  21. }
  22. }
  23. }
  24. }
  25. }
  26.  
  27. int main() {
  28. computeSPF();
  29. // Example: Print the smallest prime factor for the first 20 numbers
  30. for (ll i = 2; i <= 20; i++) {
  31. cout << "Smallest prime factor of " << i << " is " << spf[i] << "\n";
  32. }
  33. return 0;
  34. }
  35.  
Success #stdin #stdout 0.02s 10712KB
stdin
Standard input is empty
stdout
Smallest prime factor of 2 is 2
Smallest prime factor of 3 is 3
Smallest prime factor of 4 is 2
Smallest prime factor of 5 is 5
Smallest prime factor of 6 is 2
Smallest prime factor of 7 is 7
Smallest prime factor of 8 is 2
Smallest prime factor of 9 is 3
Smallest prime factor of 10 is 2
Smallest prime factor of 11 is 11
Smallest prime factor of 12 is 2
Smallest prime factor of 13 is 13
Smallest prime factor of 14 is 2
Smallest prime factor of 15 is 3
Smallest prime factor of 16 is 2
Smallest prime factor of 17 is 17
Smallest prime factor of 18 is 2
Smallest prime factor of 19 is 19
Smallest prime factor of 20 is 2