此代码会超时
#include<iostream>
using namespace std;
int main()
{
int t, n, i;
int sum = 0;
cin >> t;
while(t--)
{
int sum = 0;
cin >> n;
for(i=1; i<=n/2; i++)
{
if(n % i ==0)
sum+=i;
}
cout << sum << endl;
}
return 0;
}
此代码会超时
#include<iostream>
using namespace std;
int main()
{
int t, n, i;
int sum = 0;
cin >> t;
while(t--)
{
int sum = 1;
cin >> n;
for(i=2; i<=sqrt(n); i++)
{
if(n % i == 0 && i != sqrt(n))
sum = sum + i + n / i;
if(i == sqrt(n))
sum += i;
}
cout << sum << endl;
}
return 0;
}
此代码中的两种形式都不会超时,但是第二种方法时间会更短
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int t, n, i;
int sum = 0;
cin >> t;
while(t--)
{
int sum = 1;
cin >> n;
for(i=2; i * i <= n; i++)
{
if(n % i == 0 && i != sqrt(n))
sum = sum + i + n / i;
if(i * i == n)
sum += i;
}
// for(i=2; i * i <= n; i++)
// {
// if(n % i == 0)
// {
// if(i * i != n)
// sum = sum + i + n / i;
// else
// sum += i;
// }
// }
cout << sum << endl;
}
return 0;
}
在做题是能不调用其它多余的头文件就不调用,调用的头文件越多,所需要花费的时间越多