算法提高 8-1因式分解
时间限制:10.0s 内存限制:256.0MB
问题描述
设计算法,用户输入合数,程序输出若个素数的乘积。例如,输入6,输出2*3。输入20,输出2*2*5。
样例
与上面的样例输入对应的输出。
例:
例:
数据规模和约定
输入数据中每一个数在int表示范围内。
整数分解。
#include <iostream> #include <cstdio> #include <map> using namespace std; int cou=0; map<int,int> prime_factor(int a){ map<int,int> res; for(int i=2;i*i<a;i++){ while(a%i==0){ ++res[i]; a/=i; cou++; } } if(a!=1){ res[a]++; cou++; } return res; } int main() { int a; scanf("%d",&a); map<int,int> ans=prime_factor(a); int jud=0; for(int i=2;i<=a;i++){ if(jud==0){ if(ans[i]>0){ printf("%d",i); ans[i]--; jud=1; }else{ continue; } while(ans[i]>0){ printf("*%d",i); ans[i]--; } }else{ while(ans[i]>0){ printf("*%d",i); ans[i]--; } } } return 0; }