prime_factorization

C++

以下のコードを Wandbox で実行


#include <iostream>
#include <map>

std::map<long long, long long> res;
long long t = 0;

void pf_mapA(long long N) {
  for (long long i = 2; i*i <= N; i++) {
    if (N%i != 0) continue;
    long long cnt = 0;
    while (N%i == 0) {
      cnt++;
      N /= i;
    }

    res[i] += cnt;
    t++;
  }

  if (N != 1) res[N] = 1, t++;
}

int main() {
  long long N;
  std::cin >> N;

  if (N == 1) {
    std::cout << "1は素因数を持ちません\n";
    return 0;
  }

  pf_mapA(N);

  std::cout << N << " = ";
  long long r = 0;
  for (auto i : res) {
    r++;
    std::cout << i.first << '^' << i.second;
    if (t > r) std::cout << " * ";
  }
  std::cout << '\n';

  return 0;
}

CC0 1.0 Universal