Informatică, întrebare adresată de ovidoman, 9 ani în urmă

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 intrare

Fiș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șire

Fiș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 0

Răspunsuri la întrebare

Răspuns de JolieJulie
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
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 rossetta
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;
}
Alte întrebări interesante