直入主题: 这两个代码的区别在哪?(蒟蒻太菜了,这都看不出来QAQ)
题目是求出一个数的所有质因子。

超时的:
#include <iostream>
using namespace std;
int main()
{
int n,i=2;
cin >> n;
while(n!=i){
if(n%i==0)cout << i << endl,n/=i;
else i++;
}
if(n!=1)cout<<n;
return 0;
}
正确的:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
long long n;
cin>>n;
for(int i=2;i<=sqrt(n);i++){
if(n%i==0){
cout<<i<<endl;
n/=i;
i-=1;
}
}
cout<<n;
return 0;
}