Se dă o matrice cu n linii și m coloane nr. naturale. Se cere :
a) câte elemente prime sunt pe conturul matricii.
b) afișați elementele din matrice care sunt precedate de un număr prim
Răspunsuri la întrebare
#include <iostream>
using namespace std;
int i, j, a[102][102], n, m, prim, nr, d;
int main()
{
cin>>n>>m;
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
cin>>a[i][j];
for(j=1; j<=m; j++)
{
if(a[1][j]==1 or a[1][j]==0)
prim=0;
else prim=1;
for(d=2; d*d<=a[1][j]; d++)
if(a[1][j]%d==0)
prim=0;
if(prim==1)
nr++;
}
for(j=1; j<=m; j++)
{
if(a[n][j]==1 or a[n][j]==0)
prim=0;
else prim=1;
for(d=2; d*d<=a[n][j]; d++)
if(a[n][j]%d==0)
prim=0;
if(prim==1)
nr++;
}
for(i=2; i<n; i++)
{
if(a[i][1]==1 or a[i][1]==0)
prim=0;
else prim=1;
for(d=2; d*d<=a[i][1]; d++)
if(a[i][1]%d==0)
prim=0;
if(prim==1)
nr++;
}
for(i=n-1; i>=2; i--)
{
if(a[i][n]==1 or a[i][n]==0)
prim=0;
else prim=1;
for(d=2; d*d<=a[i][n]; d++)
if(a[i][n]%d==0)
prim=0;
if(prim==1)
nr++;
}
cout<<nr<<endl;
for(i=1; i<=n; i++)
for(j=2; j<=m; j++)
{
if(a[i][j-1]==1 or a[i][j-1]==0)
prim=0;
else prim=1;
for(d=2; d*d<=a[i][j-1]; d++)
if(a[i][j-1]%d==0)
prim=0;
if(prim==1)
cout<<a[i][j]<<' ';
}
return 0;
}
Algoritmul este testat, dar nu stiu sigur daca este valabil in toate cazurile. Sunt multe instructiuni si risc de a gresi. Banuiesc ca poate fi facut intr-o forma mai simpla, dar am ales sa-l scriu pe bucati ca sa fiu mai sigura. Sper ca te-am ajutat si ca programul functioneaza corect.