C++小程序之不同的n/i

题目描述:
给定一个n,对于i从1到n,找出有多少个不同的n/i
输入格式:
第一行一个T,表示有T组数据(T<100000)
之后T行,每行一个n(n<=10^18)
输出格式:
每行输出一个数,表示不同的个数
输入样例:
3
6
8
10
输出样例:
4
4
5
数据范围与提示:
对于50%的数据:n<=100000,T<=10
对于100%的数据:n<=10^18,T<100000

#include <iostream>
#include <vector>
#include <cmath>

int main()
{
    int T;
    std::cin >> T;
    std::vector<unsigned long long> nums(T);
    for (int i = 0; i < T; i++)
        std::cin >> nums[i];
    for (auto n : nums)
    {
        unsigned long long count = 2;
        unsigned long long m = static_cast<unsigned long long>(std::sqrt(n));
        for (unsigned long long i = 2; i <= m; i++)
        {
            auto j = n / i;
            if (i == j)
                count++;
            else
                count += 2;
        }
        std::cout << count << std::endl;
    }
    return 0;
}