#include<stdio.h> #include<algorithm> #include<map> using namespace std; int a[1000]; map<int,int>ma; int main() { int n; int num=0; scanf("%d",&n); int m=n; for(int i=2;i*i<=n;i++) { if(n%i==0) a[num++]=i; while(n%i==0) { ma[i]++; n=n/i; } } if(n>1) a[num++]=n,ma[n]++; for(int i=0;i<num;i++) { printf("%d %d\n",a[i],ma[a[i]]); } return 0; }
简述:
每个大于一的正整数都可以分为多个质数的积
20:->2*2*5
60:->2*2*3*5
计算过程:
从第一个质数2开始,把n中所有2的因数除掉,再除下一个,除到最后必为1.
原文:https://www.cnblogs.com/zjydeoneday/p/11342711.html