将一个正整数N(1<N<32768)分解质因数,把质因数按从小到大的顺序输出。最后输出质因数的个数。
输入格式
一行,一个正整数
输出格式
两行,第一行为用空格分开的质因数
第二行为质因数的个数
样例输入
66
样例输出
2 3 11
3
样例输入
90
样例输出
2 3 3 5
4
样例输入
37
样例输出
37
1
#include<bits/stdc++.h>/
using namespace std;
int a[32700],visit[32700],cnt=0;
void print(){
int i,j;
for(i=2;i<32700;i++){
if(visit[i]){
a[cnt++]=i;
for(j=i+i;j<32700;j=j+i)
visit[j]=0;
}
}
}
int main(){
int n,i,j=0,a[11];
memset(visit,1,sizeof(visit));
scanf("%d",&n);
print();
for(i=0;a[i]<=n;i++){
while(n%a[i]==0){
n=n/a[i];printf("%d ",a[i]);j++;
}
}
printf("\n%d\n",j);
return 0;
}