pub fn input() -> String {
let mut s = String::new();
std::io::stdin()
.read_line(&mut s)
.expect("Failed to read line");
s.truncate(s.trim_end().len());
s
}
macro_rules! read {
( $t:ty ) => { input().parse::<$t>().expect("Failed to parse input") };
( $( $t:ty ),+ ) => {
{
let line = crate::input();
let mut iter = line.split_whitespace();
(
$(
iter.next()
.expect("Not enough input values")
.parse::<$t>()
.expect("Failed to parse input"),
)+
)
}
};
}
// def very_smart(n):
// res = -n
// prev = None
// for i in range(1, n + 1):
// cur = n // i
// if cur == prev:
// print(n, i)
// res -= cur
// break
// res += cur
// prev = cur
// else:
// return res
// for i in range(1, cur + 1):
// lo = (n + i + 1) // (i + 1)
// hi = n // i
// add = (hi - lo + 1) * i
// res += add
// return res
fn solve(n: i64) -> i64 {
let mut res = -n;
let mut prev = -1;
let mut broke = false;
let mut lim = 0;
for i in 1..=n {
let cur = n / i;
if cur == prev {
lim = cur;
res -= cur;
broke = true;
break;
}
res += cur;
prev = cur;
}
if !broke {
return res;
}
for i in 1..=lim {
let lo = (n + i + 1) / (i + 1);
let hi = n / i;
let add = (hi - lo + 1) * i;
res += add;
}
res
}
fn main() {
for _ in 0..read!(u32) {
let n = read!(i64);
println!("{}", solve(n));
}
}