以幂形式打印整数的素因子(^)

时间:2013-09-26 14:47:10

标签: c++ c factorial prime-factoring

我需要一个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;
 }

1 个答案:

答案 0 :(得分:0)

使用std::map<int, int>包含素数(第一个整数)和该素数(第二个整数)的出现次数。

因此,当您有素数时,在地图中找到该值,如果它不在地图中,请插入它。

如果素数已存在,则递增计数。

打印时,您遍历地图,打印素数,然后打印'^'字符,然后打印素数。

详细信息留给读者练习。