Question:

求正整数N的因子个数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
using namespace std;
//计算并返回正整数n的因子个数
typedef long long ll;
ll f(ll n)
{
ll ans = 0;
for (int i = 1; i * i <= n; i++)
{
if (n % i == 0)
{
ans++;
if (i * i != n) ans++;
}
}
return ans;
}
int main()
{
ll N = 0;
cin >> N;
cout << f(N) << endl;
return 0;
}

Question:

给定正整数 N,求一共有多少组 (A, B, C) 满足 A × B + C = N。
其中 1 ≤ A, B, C ≤ N,且为正整数,注意 (1, 2, 1) 和 (2, 1, 1) 不相同。
时间限制:300ms

输入:

一行,一个正整数 N (1 ≤ N ≤ 10^6)。

输出:

一行,一个整数,表示答案。

样例1:
输入:
1
3
输出:
1
3
样例2:
输入:
1
100
输出:
1
473
Solution:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
int N, ans;
int main()
{
cin >> N;
while (N--)
{
for (int i = 1; i * i <= N; i++)
{
if (N % i == 0)
{
ans++;
if (i * i != N) ans++;
}
}
}
cout << ans << endl;
return 0;
}
Another solution:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
int n, ans;
int main()
{
cin >> n;
for(int i = 1; i < n; i++)
{
ans += n / i;
if(n % i == 0) ans--;
}
cout << ans << endl;
return 0;
}