一、问题描述:
什么叫做分解质因数?就是我们给定一个数字,把这个数字的是质数的因子按照从小到大的顺序排列出来,并输出每个质因子的个数。
二、实现思路:
就是我们从1~n/i这个范围内(i*i=n),如果找到了一个因子,使得n%i==0,那么我们就进一步除下去,直到无法满足n%i==0为止。这个时候,i一定是质因子。然后每次统计一下。输出出来。
三、代码实现:
#include<iostream> #include<algorithm> using namespace std; int n; void prime(int a){ for(int i=2;i<=a/i;i++){ if(a%i==0){ int s=0; while (a%i==0) { a/=i; s++; } printf("%d %d\n",i,s); } } if(a>1) printf("%d %d\n",a,1); puts(""); } int main(){ cin>>n; prime(n); return 0; }