Viết chương trình in ra các số nguyên tố từ 1 đến N và tính tổng các phần tử đó. Với n được nhập từ bàn phím . Không sao chép trên mạng ạ. VD: N=6 In ra: Các SNT là 2 3 5. Tổng các số là 10.

2 câu trả lời

PROGRAM bt1;
uses crt;
Var n,i,s:integer;
    A:array[1..100] of integer;
function snt(k:integer):integer;
var d:byte;
 begin
  for i:=1 to k do if k mod i=0 then inc(d);
  if d=2 then
   begin
    write(k,' ');
    S:=S+k;
    d:=0;
   end
  else d:=0;
 end;
begin
 clrscr;
 write('Nhap so n: '); readln(n);
 for i:=1 to n do snt(i);
 writeln;
 writeln(S);
 readln;
end.

//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.

}