hàm tìm số ước của 1 số n là \sigma_0(n) https://en.wikipedia.org/wiki/Divisor_function. Dãy các số này là https://oeis.org/A000005. Dãy có công thức là
If n is written as 2^z*3^y*5^x*7^w*11^v*... then
a(n)=(z+1)*(y+1)*(x+1)*(w+1)*(v+1)*...
ở đây \sigma_0(n) = 7 thì vì 7 là số nguyên tố nên n chỉ được phép có 1 ước số nguyên tố thôi, và số mũ của ước này phải là 7 - 1 = 6, hay n có dạng p^6 với p nguyên tố :V
n lên tới 10^12 thì lấy căn bậc 6 của 10^12 là 10^2 là 100, tìm mọi số nguyên tố < 100 thì ra tất cả các số có dạng p^6 < 10^{12} thôi. Rồi đếm số lượng số L <= n <= R dễ rồi, tối đa có \pi(100) = 25 số thôi :V
edit: ơ đọc đề ko kĩ nó đòi tìm số có số các ước dương là số nguyên tố hả, vậy cũng có dạng p^{q-1} với p, q nguyên tố thôi :V
ví dụ cho 2 5
mà đáp án chỉ có 1
vậy là ko tính số nguyên tố hả? Đề gì tầm bậy, số nguyên tố có 2 ước số thì 2 cũng là nguyên tố mà. Đề dỏm. Nếu ko tính 2 ước thì có 3, 5, 7, 11, 13, v.v… ước thì dễ nữa, lập sàng tìm số nguyên tố < căn(10^12) = 10^6 rồi đếm là được.