Мне нужна программа на 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;
}
использование std::map<int, int>
содержать простое число (первое целое число) и количество вхождений этого простого числа (второе целое число).
Поэтому, когда у вас есть простое число, найдите значение на карте, а если его нет на карте, вставьте его.
Если простое число уже существует, увеличить счетчик.
При печати вы перебираете карту, печатая простое число, затем символ «^», а затем количество простых чисел.
Детали оставлены в качестве упражнения для читателя.
Других решений пока нет …