分解质因数
以下两行表示n=p1a1 p2a1 …pnan ,其中p1 、p2 …pn 是n的质因数,a1、a2…an表示相应质因数个数。
实现程序:
#include<iostream>
using namespace std;
const int N=1000; //便于定义数组大小
int n;
int p[N], a[N], k; //数组p表示质因数,数组a表示相应质因数个数,k表示分解的个数
int main()
{
freopen("p.in","r",stdin);
freopen("p.out","w",stdout); //采用文件输入与输出
int i=2;
cin>>n;
while (n>1) //当大于1时进行分解质因数
{
if (n%i==0) //能被i整除时
{
p[++k]=i; //把这个质因数保存在数组p[k]中
a[k]=0;
while (n%i==0) n/=i, a[k]++; //统计这个质因数的个数,并保存在a[k]中
}
else
i++; // 换下一个因数(提示:如果上面的n%i==0为真,那么i肯定是质数)
}
for(i=1;i<=k;i++) cout<<p[i]<<' '; //输出质因数
cout<<endl;
for(i=1;i<=k;i++) cout<<a[i]<<' '; //输出质因数个数
cout<<endl;
return 0;
}