Sunteți pe pagina 1din 2

Subiectul 1 Se considera o matrice patratica A cu n linii si n coloane, avnd ca elemente nume re ntregi (n<=50). Sa se calculeze si sa se scrie n fisierul suma.

out, pe linii diferite: a) suma elementelor prime de pe linii divizibile cu o valoare oarecare k, citita de la tastatura; b) produsul elementelor care au exact trei divizori. Exemplu: Pentru n=4 si matricea: 1 2 2 4 5 7 6 3 9 8 7 6 2 6 6 1 pentru k=2 citit de la tastatura se va scrie n fisierul suma.out: s=17 (adica 5+7+3+2) p=36 (elementele 9 si 4 ndeplinesc aceasta conditie) #include<iostream> #include<fstream.h> #define N_MAX 50 using namespace std; int n; bool prim(int nr) { bool ok=true; int k; if(nr==1) return false; if((nr==2)||(nr==3)) return true; else for(k=2;k<=nr/2;k++) if(nr%k==0) ok=false; return ok; } int nr_div(int k) { int nd=2,i; //if (k==1) return 1; //else for(i=2;i<=k/2;i++) if(k%i==0) nd++; return nd; } int main() { int a[N_MAX][N_MAX],i,j,s=0,p=1,k; cout<<"n="; cin>>n;

cout<<"k="; cin>>k; for(i=1;i<=n;i++) for(j=1;j<=n;j++) { cout<<"a["<<i<<"]["<<j<<"]="; cin>>a[i][j]; } for(i=1;i<=n;i++) { for(j=1;j<=n;j++) cout<<a[i][j]<<" "; cout<<endl; } for(i=1;i<=n;i++) for(j=1;j<=n;j++) { if(i%k==0) if(prim(a[i][j])) s=s+a[i][j]; if(nr_div(a[i][j])==3) p=p*a[i][j]; } ofstream f("suma.txt"); f<<"Suma elementelor de pe linii divizibile cu valoarea "<<k<<" este "<<s<<en dl; f<<"Produsul elementelor care au exact 3 divizori este:"<<p; f.close(); return 0; }