-4

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

1 回答 1

0

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

因此,当您有素数时,请在映射中找到该值,如果它不在映射中,则将其插入。

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

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

留给读者练习的细节。

于 2013-09-26T16:46:32.320 回答