质因数分解

 1 /*
 2     一、分解只因数的原理
 3     程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
 4     (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
 5     (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
 6      重复执行第一步。
 7     (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
 8     ps : 1的质因数为0个(某些题目中) 
 9 */
10 
11 #include<bits/stdc++.h>
12 
13 using namespace std;
14 
15 map<int,int> mp;
16 
17 int main(){
18     int n;
19     cin >> n;
20     cout << n << "=";
21     for(int i=2; i<=n; i++){
22         if(n == i) mp[i]++;
23         while(n != i){
24             if(n % i == 0){
25                 mp[i]++;
26                 cout << i << "*";
27                 n /= i;
28             }else break;
29         }
30     }
31     cout << n << endl;
32     mp[n]++;
33     cout << "该数字中不同质因子个数为:" << " " << mp.size() << endl;
34     if(n != 1){
35         cout << "分别为:" << endl;
36         for(map<int,int>::iterator it = mp.begin(); it != mp.end(); it++){
37             cout << "质因子为: " << it->first  << " " << "质因子个数为: " << it->second << endl;
38         }
39     }
40     return 0;
41 }
原文地址:https://www.cnblogs.com/zhangqiling/p/12494276.html