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

1. Sa se afiseze elementele prime aflate pe diagonala principala a unei matrice.
2. Sa se afiseze suma elementelor perfecte aflate pe diagonala secundara a unei matrice.


Robert14: Ce este un element perfect?

Răspunsuri la întrebare

Răspuns de Utilizator anonim
0
Problema 1:
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int a[100][100], m;
    cin >> m;
    for (int i=0; i<m; i++)
        for (int j=0; j<m; j++)
        {
            cin >> a[i][j];
            if (i==j)
            {
                int OK=1;
                if (a[i][j]<2) OK = 0;
                if (a[i][j]!=2)
                    for (int k=2; k<=sqrt(a[i][j]) && OK; k++)
                        if (a[i][j]%k==0) OK=0;
                if (OK) cout << a[i][j] << " ";
            }
        }
    return 0;
}

Problema 2 (banuiesc ca prin element perfect te-ai referit la element patrat perfect):
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int a[100][100], m;
    cin >> m;
    for (int i=0; i<m; i++)
        for (int j=0; j<m; j++)
        {
            cin >> a[i][j];
            if (i+j==m-1 && sqrt(a[i][j])*sqrt(a[i][j])==a[i][j])
                    cout << a[i][j];
        }
    return 0;
}
Răspuns de rossetta
0
1)

#include <iostream>
using namespace std;

int v[100][100];

int main() {
  int n, i, j;
  cin >> n;
  for(i = 0; i < n; i++)
    for(j = 0; j < n; j++) {
      cin >> v[i][j];
        if(i == j) {
          int d = 2;
          while( d * d <= v[i][j] && v[i][j] % d != 0)
            d++;
          if(d * d > v[i][j] && v[i][j] > 1)
            cout << v[i][j] <<" ";
        }
  }
  return 0;

2) Un numar perfect este un numar egal cu suma divizorilor sai din care se exclude numarul insusi.

#include <iostream>
using namespace std;

int v[100][100];

int main() {
  int n, i, j, stot = 0, sdiv;
  cin >> n;
  for(i = 0; i < n; i++)
    for(j = 0; j < n; j++) {
      cin >> v[i][j];
        if(i + j == n - 1) {
          int d = 2;
          sdiv = 1;
          while( d * d < v[i][j]) {
            if(v[i][j] % d == 0) {
              sdiv = sdiv + d;
              sdiv = sdiv + v[i][j] / d;
            }
            d++;
          }
          if(d == v[i][j])
            sdiv = sdiv + d;
          if(sdiv == v[i][j])
            stot = stot + sdiv;
        }
    }
  cout << stot;
  return 0;
}
}


Alte întrebări interesante