#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
while(cin>>n){
for(int i=2;i<=(n+1)/2;i++){
while(n!=i){
if(n%i==0){
cout<<i<<"*";
n/=i;
}
else
break;
}
}
cout<<n<<endl;;
}
return 0;
}
例题:
#include<iostream>
#include<string.h>
using namespace std;
const int maxn=1e6+10;
int pow[maxn];//存放某个质数的出现次数
int a[maxn];//用来存放质数 如 2 3
int main()
{
int T;cin>>T;
while(T--){
memset(pow,0,sizeof pow);
memset(a,0,sizeof a);
int n; cin>>n;
int j=0,k=n;
if(n==0 || n==1)
cout<<n<<endl;
else{
for(int i=2;i<=(k+1)/2;i++){
if(n%i==0){
a[j++]=i;
pow[i]=0;
while(n%i==0){
n/=i;
pow[i]++;
}
}
}
if(j==0)
cout<<n<<"="<<n<<"^"<<"1"<<endl;
else{
cout<<k<<"=";
for(int i=0;i<j;i++){
cout<<a[i]<<"^"<<pow[a[i]];
if(i!=j-1)
cout<<"*";
}
cout<<endl;
}
}
}
return 0;
}