超时错误
#include <iostream>
#include <vector>
using std::vector;
using namespace std;
using std::cout;
using std::cin;
using std::endl;
int main() {
int n;
cin >> n;
vector<int> num;
vector<int> answer;
for (int i = 0; i < n; ++i) {
int tmp;
cin>>tmp;
num.push_back(tmp);
}
for (int i = 0; i < n; ++i) {
int cnt=0;
int tmp=num[i];
for (int j = 1; j <=tmp; ++j) {
if (tmp%j==0)
cnt=cnt+1;
}
answer.push_back(cnt);
}
for (auto it:answer) {
cout<<it<<endl;
}
}
改正:
#include <iostream>
#include <vector>
using std::vector;
using namespace std;
using std::cout;
using std::cin;
using std::endl;
int main() {
int n;
cin >> n;
for(int i=0;i<n;++i)
{
int a;
cin>>a;
int cnt=0;
for(int j=1;j*j<=a;++j)
{
if(j*j==a)
{
cnt=cnt+1;
}else if(a%j==0)
{
cnt+=2;
}
}
cout<<cnt<<endl;
}
}
关键点:for(int j=1;j*j<=a;++j)