关于分解质因数,如何解决?

img


代码:

#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<<'*'<

超时状况:

img

求帮助!


#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;
    }
}

你这个两重循环,肯定是超时了,可以用素数表,从小到大,把找到的素数放入表中,然后往上仅仅判断能否被小素数整除即可。