Quay lại danh sách thử thách
Trung bình 0 đã giải Tỷ lệ chấp nhận 0%

Tổng các số nguyên tố nhỏ hơn một giới hạn

Cộng tất cả các số nguyên tố nhỏ hơn nghiêm ngặt một giới hạn.

Bạn sẽ học được gì

  • Tìm mọi số nguyên tố dưới giới hạn bằng sàng
  • Đánh dấu bội số thay vì kiểm tra từng số
  • Cộng tổng hiệu quả

Đề bài

Xem bản gốc (English)

Một số nguyên tố là số nguyên lớn hơn 1 chỉ chia hết cho 1 và chính nó. Hãy cộng tất cả các số nguyên tố nhỏ hơn nghiêm ngặt so với limit. Bản thân limit không được tính vào, kể cả khi nó là số nguyên tố.

Cài đặt hàm prime_sum(limit).

Đầu vào

limit: Giới hạn trên (không bao gồm).

Đầu ra

Trả về tổng các số nguyên tố thỏa mãn, hoặc 0 nếu không có số nào.

Ràng buộc

0 ≤ limit ≤ 2,000,000. Trả về tổng dưới dạng số nguyên có dấu 64-bit.

Ví dụ

Ví dụ 1
Đầu vào:
limit = 12

Kết quả mong đợi:
expected = 28
Đầu vào:
long long limit = 12;

Kết quả mong đợi:
long long expected = 28;
Đầu vào:
long limit = 12;

Kết quả mong đợi:
long expected = 28;

Giải thích

Các số nguyên tố nhỏ hơn 12 là 2, 3, 5, 7 và 11; tổng của chúng là 28.

Ví dụ 2
Đầu vào:
limit = 2

Kết quả mong đợi:
expected = 0
Đầu vào:
long long limit = 2;

Kết quả mong đợi:
long long expected = 0;
Đầu vào:
long limit = 2;

Kết quả mong đợi:
long expected = 0;

Giải thích

Không có số nguyên tố nào nhỏ hơn nghiêm ngặt 2.

Hướng tiếp cận

Hãy tự thử trước, sau đó mở từng gợi ý một.

Gợi ý 1

Chi phí lớn nhất là tìm số nguyên tố hiệu quả; kiểm tra chia hết kiểu ngây thơ cho mọi số sẽ quá chậm.

Gợi ý 2

Dùng cách giống sieve để đánh dấu hợp số, rồi cộng các số còn chưa bị đánh dấu và nhỏ hơn giới hạn.

Gợi ý 3

Nhớ rằng chính giới hạn cũng bị loại trừ, kể cả khi nó là số nguyên tố, và các giới hạn nhỏ có thể không đóng góp gì.

Độ phức tạp mong đợi

thời gian O(limit log log limit), bộ nhớ phụ O(limit)

Tham khảo

Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.

Học hỏi từ người khác

Giải pháp cộng đồng

Chưa có giải pháp nào được chia sẻ. Hãy giải thử thách này để đăng giải pháp đầu tiên.