算法提高 质因数
时间限制:1.0s 内存限制:512.0MB
将一个正整数N(1<N<32768)分解质因数。例如,输入90,打印出90=2*3*3*5。
样例输入
66
样例输出
66=2*3*11
#include<iostream>
using namespace std;
int prime[100000]; //题目数值不大;
int a[100];
int main()
{
int n,i,j;
cin >>n;
int t=n; //保存n值,用于输出时的格式
for(i=0;i<100000;i++)
prime[i]=i;
for(i=2;i<100000;i++){ //素数筛选
if(prime[i]){
for(j=i+i;j<=100000;j+=i){
prime[j]=0;
}
}
}
int k=0;
for(i=2;i<100000;i++){
if(prime[i]){
if(n%i==0){
a[k]=i;
n/=i;
k++;
i--;
}
}
}
cout <<t<<"=";
for(i=0;i<k-1;i++){
cout <<a[i]<<"*";
}
cout <<a[k-1];
return 0;
}