fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. bool fl[1000005]; //default value=0, kalo true berarti sudah ditandai (bukan prima)
  4. vector<pair<int,int>> v;
  5.  
  6. int main(){
  7. int n;
  8. cin >> n;
  9.  
  10. // value fl[1]=0, ngga usah kita ubah
  11. // kalo untuk nandain angka prima biasa, fl[i]=1
  12.  
  13. fl[1]=1;
  14.  
  15. for (int i=2 ; i<=1000000 ; i++){
  16. if (fl[i]==1) continue;
  17. else {
  18. //kita tandai kelipatan dari i, mulai dari 2*i
  19. for (int j=2*i ; j<=1000000 ; j+=i){
  20. fl[j]=1;
  21. }
  22. }
  23. }
  24.  
  25. // 3*1 3*2
  26.  
  27.  
  28. // for (int i=1 ; i<=n ; i++){
  29. // int val;
  30. // cin >> val;
  31. // if (fl[val]==0) cout << "YA\n";
  32. // else cout << "BUKAN\n";
  33. // }
  34.  
  35. // faktorisasi prima merupakan perkalian dari bilangan bilangan prima
  36. for (int i=1 ; i<=1000000 ; i++){
  37. if (fl[i]==0){
  38. int cnt=0;
  39. while (n%i==0){
  40. n/=i;
  41. cnt++;
  42. }
  43. if (cnt>0){
  44. v.push_back({i, cnt});
  45. }
  46. }
  47. }
  48.  
  49. if (v[0].second==1){
  50. cout << v[0].first;
  51. }
  52. else {
  53. cout << v[0].first << "^" << v[0].second;
  54. }
  55.  
  56. for (int i=1 ; i<v.size() ; i++){
  57. cout << " x ";
  58.  
  59. if (v[i].second==1){
  60. cout << v[i].first;
  61. }
  62. else {
  63. cout << v[i].first << "^" << v[i].second;
  64. }
  65. }
  66.  
  67.  
  68. }
Success #stdin #stdout 0.01s 5320KB
stdin
693
stdout
3^2 x 7 x 11