码题集OJ-寻找质因子 (matiji.net) 我刚开始是这样写的:
枚举i,看i是不是x的约数,同时看i是不是素数:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int x;
bool prime(int x)
{
if(x<2)return false;
for(int i=2;i*i<=x;i++)
{
if(x%i==0)return false;
}
return true;
}
signed main()
{
cin.tie(nullptr)->sync_with_stdio(false);
cin>>x;
for(int i=2;i<=x;i++)
if(prime(i) && x%i==0)
{
cout<<i<<endl;
}
return 0;
}
上面这样写的话是两层循环,会超时.
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{
int n;cin>>n;
int pre=2;
while(n!=1)
{
if(n%pre==0)
{
cout<<pre<<endl;
n/=pre;
}
else pre++;
}
return 0;
}