Ta có thể thấy rằng mọi hợp số n đều có ít nhất 2 ước và (, , ) sao cho . Vậy chỉ cần kiểm tra tất cả các , và vì lớn nhất có thể là nên ta chỉ cần kiểm tra các số trong khoảng :
Một tính chất khác có thể thấy là các số nguyên tố đều có dạng hay , vậy ta cũng sẽ bắt đầu kiểm tra từ , xét xem có chia hết cho hay hay không, và tăng lên sau mỗi lần lặp:
Sàng nguyên tố (sieve of Eratosthenes) là một thuật toán kiểm tra số nguyên tố trong đoạn với độ phức tạp .
Ý tưởng: Ta sẽ loại bỏ bội của các số nguyên tố dần dần (đã là bội của một số thì là hợp số). Ta sẽ bắt đầu từ :
Như ảnh bên dưới, các số được tô màu đậm sẽ là các số nguyên tố, những số tô màu nhạt tương ứng sẽ là bội của số nguyên tố ấy.
Bên cạnh đó, ta cũng có thể tích hợp tìm ước nguyên tố nhỏ nhất vào sàng nguyên tố:
Ta có thể phân tích thừa số nguyên tố với độ phức tạp :
Thuật toán trên đảm bảo prime_factors sẽ chỉ chứa số nguyên tố. Giả sử có một ước hợp số là với với là một ước nguyên tố của , là số mũ của trong . Khi này, vì các , sẽ chia cho các trước, và sau khi chia hết cho các thì hiện tại sẽ không còn chia hết cho nữa, vì thế prime_factors sẽ chỉ chứa các ước nguyên tố.
Khi có truy vấn, độ phức tạp sẽ là .
Có một cách cải tiến xử lí truy vấn từ thành , với và càng lớn thì sẽ càng hiệu quả hơn. Ta sẽ dùng mảng lpd đã tính ở trên:
Ta mất để sàng lpd preprocess ở đầu, sau đó với mỗi truy vấn thì hàm phân tích thừa số nguyên tố mất , vì thế tổng độ phức tạp là .
Số ước số của :
Tổng các ước số của :
Xét số có dạng với là một số nguyên tố và là số mũ của số nguyên tố ấy. Có thể thấy sẽ có ước số: ( là )
Xét số có dạng . Các ước của là:
Dễ có thể thấy .
Tổng quát hơn, của là
Tương tự với số các ước số, ta cũng có các ước như bảng trên.
Vậy tổng sẽ là:
Tổng quát hơn, của là
Phi hàm Euler cho ta biết có bao nhiêu số từ đến là số nguyên tố cùng nhau với ( và nguyên tố cùng nhau )
Công thức: với ,
Tính cho mọi từ tới :