我需要一个C ++或C程序来计算素因子,例如你输入135我希望输出像这样(3 ^ 3)(5 ^ 1)而不是3,3,3,5。
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
void get_divisors(int n);
int main()
{
int n = 0;
cout << "Enter a number:";
cin >> n;
get_divisors(n);
cout << endl;
}
void get_divisors(int n)
{
int i;
double sqrt_of_n = sqrt(n);
for (i = 2; i <= sqrt_of_n; i++)
if (n % i == 0)
{
cout << i << ", ";
get_divisors(n / i);
return;
}
cout << n;
}
答案 0 :(得分:0)
使用std::map<int, int>
包含素数(第一个整数)和该素数(第二个整数)的出现次数。
因此,当您有素数时,在地图中找到该值,如果它不在地图中,请插入它。
如果素数已存在,则递增计数。
打印时,您遍历地图,打印素数,然后打印'^'字符,然后打印素数。
详细信息留给读者练习。