示例#1
0
DivisorsTable::DivisorsTable(ValueTable valueTable) : QList < QPair <int, Divisors> >()
{
    for (int i = 0; i < valueTable.size(); ++ i){
        QPair <int, Divisors> xyPair;
        QPair <int, int> valuePair = valueTable.at(i);

        xyPair.first = valuePair.first;
        xyPair.second = Divisors (valuePair.second);
        this->append(xyPair);
    }
}
示例#2
0
文件: main.cpp 项目: CCJY/coliru
int main()
{
    std::vector<int> ans;
    ans = Divisors(9);
    std::cout << "Divisors of 9 are: ";
    for(std::vector<int>::iterator it = ans.begin(); it != ans.end(); it++) {
        std::cout << *it << ", ";
    }
    std::cout << std::endl;
    
    return 0;
}
示例#3
0
  Divisors squarefree_divisors(const PrimePowers& pp, bool sorted=true) const {
    const uint32 size = 1u << omega(pp);
    auto ret = Divisors(size);

    ret[0] = 1;
    uint32 curr_size = 1;
    for (auto p : pp) {
      uint32 next_size = curr_size;
      for (uint32 i = 0; i < curr_size; ++i) {
        ret[next_size++] = ret[i] * p.p;
      }
      curr_size = next_size;
    }
    if (sorted) {
      std::sort(ret.begin(), ret.end());
    }
    return ret;
  }
示例#4
0
  Divisors divisors(const PrimePowers& pp, bool sorted=true) const {
    uint32 size = tau(pp);
    auto ret = Divisors(size);

    ret[0] = 1;
    uint32 curr_size = 1;
    for (auto p : pp) {
      uint32 next_size = curr_size;
      num_t q = p.p;
      for (uint32 e = 1; e <= p.e; ++e) {
        for (uint32 i = 0; i < curr_size; ++i) {
          ret[next_size++] = ret[i] * q;
        }
        q *= p.p;
      }
      curr_size = next_size;
    }
    if (sorted) {
      std::sort(ret.begin(), ret.end());
    }
    return ret;
  }