#include
using namespace std;
int main() {
int a;
bool u=0;
cin>>a;
cout<'=';
while(sqrt(a)>1) {
int w=sqrt(a);
for(int i=2; i<=w;) {
if(a%i==0) {
a/=i;
if(u!=0) {
cout<<'*';
}
cout<break;
}
}
}
if(a>1) {
cout<<'*'<
超时状况:

求帮助!
#include <bits/stdc++.h>
using namespace std;
#include <math.h>
int main() {
int a,i;
bool u=0;
cin>>a;
cout<<a<<'=';
while(sqrt(a*1.0)>1) {
int w=sqrt(a*1.0);
if(w<2)
break;
for(i=2; i<=w;i++) {
if(a%i==0) {
a/=i;
if(u!=0) {
cout<<'*';
}
u=1;
cout<<i;
break;
}
}
if(i>w)
break;
}
if(a>1) {
cout<<'*'<<a;
}
}
你这个两重循环,肯定是超时了,可以用素数表,从小到大,把找到的素数放入表中,然后往上仅仅判断能否被小素数整除即可。