如何在 c++ 中将质因数向量<int >减少到映射<int,int>?

How to Reduce prime factor vector<int > to map<int,int> in c++?

本文关键字:int gt lt 映射 向量 质因数 c++      更新时间:2023-10-16

我知道如何找到给定数字的质因数。

我将它们存储在整数向量中。

赞 : prime_factor(2048)

给:

2 2 2 2 2 2 2 2 2 2

2

我想要使用map的键值对格式的解决方案

喜欢:

prime_factor(2048)

给出: (2:11)

键必须是素数

,值必须是它在素数中的出现。

这是我的代码,它返回了一个向量:

vector<int> primefactor(int n)
{vector<int> arr;
while(n%2==0)
    {
    n/=2;
    arr.push_back(2);
    }
int i=3;
    while(i*i<=n)
    {
        if(n%i==0)
    {   
    arr.push_back(i);
    n=n/i;
    }
    i+=2;
    }
if(n>2)
    {
    arr.push_back(n);
    }
return arr;
}

如果以 map<int,int> 作为结果开始,则可以将push_back(i)替换为 res[i]++ 以获得所需的输出:

map<int,int> res;
while ( n%2 == 0 ) {
    n/=2;
    res[2]++;
}
...