(pbinfo #666) Functia care verifica daca un numar n este prim, este buna. Totusi nu imi actualizeaza contorul. Puteti sa ma ajutati?
#include
#include
using namespace std;
int prim(long long n)
{
long long d, ok=0;
for(d=2;d<=sqrt(n);d++)
{
if(n%d==0)
{
ok=1;
break;
}
}
if(ok==0 && n>1)
return 1;
return 0;
}
int main()
{
long long a[105][105], i, j, c=0, n, m;
cin>>n>>m;
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
cin>>a[i][j];
}
}
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
if(i%2==0 && prim(a[i][j]==1))
{
c++;
}
}
}
cout<
}
Cerința
Se dă o matrice cu n linii și m coloane și elemente numere naturale. Să se determine câte dintre elementele situate pe linii cu indici pari sunt prime.
Date de intrare
Programul citește de la tastatură numerele n m, iar apoi n șiruri cu câte m numere naturale, reprezentând elementele matricei.
Date de ieșire
Programul va afișa pe ecran numărul C, reprezentând valoarea căutată.
Restricții și precizări
1 ≤ n , m ≤ 100
elementele matricei sunt numere naturale mai mici decât 1.000.000
liniile matricei sunt numerotate de 1 la n, iar coloanele de la 1 la m.
Pentru cod mai clar:
Răspunsuri la întrebare
Ai pierdit o paranteza la acest if
if(i%2==0 && prim(a[i][j]==1)), mă refer la verificarea primalitatii
Eu iti propun o altă structură să scoţi acest if din forul lui j, deoarece verifici si pentru linii impare pentru fiecare element din linie... nu e raţional
for(i=1; i<=n; i++)
{
if(i%2==0)
for(j=1; j<=m; j++)
{
if (prim(a[i][j])==1)
{
c++;
}
}
}
for (i=2; i<=n; i+=2)
for (j=1; j<=m; ++j)
if (prim(a[i][j])) ++c;
cout << c << endl;
#include <iostream>
using namespace std;
int a[100][100];
int prim(int m)
{
int p=1;
if (m<2) p=0;
else if (m==2) p=1;
else
{
if (m%2==0) p=0;
else
{
for (int k=3; k*k<=m && p; ++k)
if (m%k==0) p=0;
}
}
return p;
}
int main()
{
int n, m, i, j, c=0;
cin >> n >> m;
for (i=1; i<=n; ++i)
for (j=1; j<=m; ++j)
cin >> a[i][j];
for (i=2; i<=n; i+=2)
for (j=1; j<=m; ++j)
if (prim(a[i][j])) ++c;
cout << c << endl;
return 0;
}