aboutsummaryrefslogtreecommitdiff
path: root/challenge-150/deadmarshal/cpp/ch-2.cpp
blob: 0ea102055f36792951736c6089b1e5f117762b9a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include<iostream>
#include<vector>
#include<algorithm>

std::vector<int> prime_factors(int n)
{
  int c = 2;
  std::vector<int> v{};
  while(n > 1)
  {
    if(n % c == 0)
    {
      v.push_back(c);
      n /= c;
    }
    else c++;
  } 
  return v;
}

std::vector<int> square_free_integers()
{
  std::vector<int> v{};
  int i = 1;
  do{
    std::vector<int> factors = prime_factors(i);
    std::sort(factors.begin(), factors.end());
    const bool hasDups = std::adjacent_find(factors.begin(),
					    factors.end())
      != factors.end();
    if(!hasDups)
      v.push_back(i);
    i++;
  }while(i <= 500);
  return v;
}

int main()
{
  std::vector<int> v = square_free_integers();
  for(const auto& e : v)
    std::cout << e << " ";
  std::cout << "\n"; 
  return 0;
}