求一个数所有质因子以及其个数
要求:输入一个数,输出这个数分解后的所有质因子,并输出其个数,例如:120=2*2*2*3*5
输入:120
输出:2 2 2 3 5
质因子个数:5
实现代码:
#include <stdio.h>
bool a[100001];
int b[100001];
int size;
void Init(){
size =0;
for(int i=2;i<=100000;i++){
if(a[i]==true) continue;
if(i>1000) continue;
b[size++]=i;
if(a[i]==false){
for(int j=i*i;j<1000;j+=i){
a[j]=true;
}
}
}
}
int main(int argc, char *argv[])
{
int n;
while(scanf("%d",&n)!=EOF){
Init();
int tmp,ans=0,size1=0;
for(int i=0;i<size;i++){
if(b[i]<=n&&n%b[i]==0){
while(n%b[i]==0){
size1+=1;
n=n/b[i];
printf("%d ",b[i]);
}
ans+=size1;
size1=0;
}
}
if(n!=1){
int max=n;
ans+=1;
}
printf("\n质因子个数:");
printf("%d\n",ans);
}
}
测试输出: