Ajungând la capitolul de numere prime, Bianca încearcă sa își facă tema la matematica. Aceasta trebuie
sa calculeze atât cel mai mare număr prim mai mic sau egal cu x, cat si suma primelor N numere prime
mai mari decât x. Bianca, însa, nu știe sa rezolve tema si, pentru a nu lua o nota proasta la școala, va cere
ajutorul.
Cerința: Scrieți un program care calculează atât cel mai mare număr prim mai mic sau egal cu un nu-
măr dat x, cat si suma primelor N numere prime mai mari decât x.
Date de intrare: Fişierul de intrare prime.in conține pe prima linie separate printr-un spațiu doua nu-
mere naturale x si N cu semnificația din enunț.
Date de ieşire: În fişierul de ieşire prime.out se va afisa pe prima linie cel mai mare număr prim mai
mic sau egal cu x, iar pe a doua linie suma primelor N numere prime mai mari decât x.
Restricţii: 3 ≤ x ≤ 1.000.000; 1 ≤ N ≤ 100.000
Se garantează ca al N - lea număr prim mai mare decât x nu va depăși niciodată 3.000.000
Răspunsuri la întrebare
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("prime.in");
ofstream fout("prime.out");
int prim(int x) {
int div = 0, prim;
for(int i = 2;i <=x; i++) {
div = 0;
for(int j = 2; j <=i/2; j++) {
if(i%j==0) {
div++;
}
}
if (div == 0) {
prim = i;
}
}
return prim;
}
int suma(int x, int N) {
int numar=1, S=0, div = 0;
for(int i = x; numar <= N; i++) {
div = 0;
for(int j = 2; j<=i/2; j++) {
if(i%j == 0) {
div++;
}
}
if (div == 0) {
numar++;
S = S+ i;
}
}
return S;
}
int main() {
int x, N;
fin >> x >> N;
fout << prim(x) << endl;
fout << suma(x, N);
return 0;
}