如何在 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]++;
}
...
我知道如何找到给定数字的质因数。
我将它们存储在整数向量中。
喜欢: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]++;
}
...