Java
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.close();
List<Integer> res = new ArrayList<>();
for (int i = 2; i <= n / i; i++) {
if (n % i == 0) {
List<Integer> seq = new ArrayList<>();
for (int m = n, j = i; m % j == 0; j++) {
seq.add(j);
m /= j;
}
if (seq.size() > res.size()) {
res = seq;
}
}
}
if (res.isEmpty()) {
res.add(n);
}
System.out.println(res.size());
System.out.print(res.get(0));
for (int i = 1; i < res.size(); i++) {
System.out.print("*" + res.get(i));
}
}
}
C++
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
int n;
int main() {
cin >> n;
vector<int> res;
for (int i = 2; i <= n / i; i++)
if (n % i == 0) {
vector<int> seq;
for (int m = n, j = i; m % j == 0; j++) {
seq.push_back(j);
m /= j;
}
if (seq.size() > res.size()) res = seq;
}
if (res.empty()) res.push_back(n);
cout << res.size() << endl;
cout << res[0];
for (int i = 1; i < res.size(); i++) cout << '*' << res[i];
return 0;
}