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