Cerința
Se dă un tablou cu n elemente, numere naturale. Să se afișeze numerele prime din șir, în ordinea în care apar în șir.
Se va defini și apela subprogramul prim, care verifică dacă un număr natural transmis ca parametru este prim.
Date de intrareFișierul de intrare prime.in conține pe prima linie numărul n, iar iar pe a doua linie cele n elemente ale tabloului.
Date de ieșireFișierul de intrare prime.out va conține pe prima linie elementele cerute, separate prin exact un spațiu.
Restricții și precizări1 ≤ n ≤ 1000elementele tabloului vor fi mai mici decât 1 000 000 0Răspunsuri la întrebare
Răspuns de
2
Nu pot sa trimit tot proiectul,cu fisierele...Tot ce trebuie sa faci e sa copiezi codul intr-un alt proiect deschis de tine,si sa atasezi la proiect filele prime.in si prime.out,astfel:
File->New->Empty file->"prime.in"->ok->ok
si
File->New->Empty file->"prime.out"->ok->ok
File->New->Empty file->"prime.in"->ok->ok
si
File->New->Empty file->"prime.out"->ok->ok
Anexe:
rossetta:
Nu stiu care este limita de timp dar sunt sanse foarte mari ca sursa ta sa depaseasca limita de timp. Un test cu 1000 de elemente si cu toate elementele cu valoarea 1 0 000 000 (vedem din enunt ca este posibil) are nevoie de aproximativ 3 minute. Probabil limita de timp este mult mai mica.
Răspuns de
2
#include <iostream>
using namespace std;
int prim (int n) {
int d = 2; // testam potentialii divizori incepand cu 2 ( primul numar prim)
while(d * d <= n && n % d != 0) //cat timp d este mai mic decat radical(n)
d++; //si n nu se imparte la d, crestem d
return (d * d > n && n > 1); //daca n este prim, d o sa depaseasca radical(n)
}
int main() {
freopen("prime.in", "r", stdin);
freopen("prime.out", "w", stdout);
int n;
cin >> n;
for(int i = 0; i < n; i++) {
int val;
cin >> val;
if(prim(val) == 1)
cout << val <<" ";
}
return 0;
}
using namespace std;
int prim (int n) {
int d = 2; // testam potentialii divizori incepand cu 2 ( primul numar prim)
while(d * d <= n && n % d != 0) //cat timp d este mai mic decat radical(n)
d++; //si n nu se imparte la d, crestem d
return (d * d > n && n > 1); //daca n este prim, d o sa depaseasca radical(n)
}
int main() {
freopen("prime.in", "r", stdin);
freopen("prime.out", "w", stdout);
int n;
cin >> n;
for(int i = 0; i < n; i++) {
int val;
cin >> val;
if(prim(val) == 1)
cout << val <<" ";
}
return 0;
}
Alte întrebări interesante
Matematică,
8 ani în urmă
Chimie,
8 ani în urmă
Limba română,
8 ani în urmă
Geografie,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă