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

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

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

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

喜欢:prime_factor(2048)

给出:

2 2 2 2 2 2 2 2 2 2 2

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

喜欢:

prime_factor(2048)

给出:(2:11)

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

这是我的代码,return 我是一个向量:

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]++;
}
...