//Mình viết code C++ nhé. Không sao chép đâu cả :)
#include <algorithm>
#include <iostream>
//Tạo ra một cái sàng nguyên tố (kiểu Eratosthenes)
const bool * sang_nguyen_to(const int n)
{
//Tạo mảng có n phần tử:
bool * sang= new bool[n];
fill(sang, sang+ n, 1);
//"Đục" số 0 và số 1:
sang[0] = sang[1] = 0;
for (int i = 0; i<n; ++i)
{
//Nếu số đã bị "đục" thì bỏ qua.
if (sang[i] == 0) continue;
//Nếu số chưa bị "đục" thì là số nguyên tố, "đục" hết tất cả các bội của nó.
for (int j = i+i; j<Num; j+=i) sang[j] = 0;
}
return sang;
}
int main()
{
int N; //Khai báo số nguyên N.
cin >> N; //Nhập vào số n.
bool * sang = sang_nguyen_to(N + 1); //Tạo một mảng các giá trị để kiểm tra xem nó có phải là số nguyên tố không. Nếu số N là số nguyên tố thì lưu 1, nếu không thì lưu 0.
long long tong = 0; //Khai báo biến tổng, để kiểu to to một tý kẻo tràn số.
for (int i = 1; i<=N; ++i) //Duyệt từ 1 đến N.
{
if (sang[i] == 1) //Nếu là số nguyên tố
{
cout << i << " "; //Xuất ra số i.
tong = tong + i; //Tăng tổng.
}
}
cout << endl;
cout << tong; //Xuất ra tổng.
return 0; //Kết thúc.
}