Ce este gresit la rezolvarea mea? Am de rezolvat problema 666 de pe pbinfo si enuntul este: 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: 4 3 5 12 10 3 9 1 7 10 1 10 9 3 Date de iesire: 2 Rezolvarea mea: #include
1. la declarare matricea trebuie sa fie cu 101 elemente pentru că ai inceput de la 1. - a[101][101]
2. când parcurgi liniile e suficient sa începi de la 2 și să crești i cu 2. nu e obligatoriu în această problema, dar e util să știi cum să faci programul mai rapid
3.algoritmul pentru verificarea primalitatii nu pare corect
uite aici pe scurt
daca e numărul e 0 sau 1 ok primește 0, adică numărul nu este prin
daca numărul este 2 sau 3 numărul este prim, deci ok = 1
și apoi ai for ( int d = 2; d * d <= a[i][j]; d++)
daca gasesti divizor ok primește 0
( celălalta varianta e sa mergi până la radical din numar, nu până la număr / 2)
4. ok trebuie sa aibă valoarea 0 de fiecare dată când se parcurge linia.
Verified answer
Răspuns:
Salut! Ai câteva greșeli în cod
1. la declarare matricea trebuie sa fie cu 101 elemente pentru că ai inceput de la 1. - a[101][101]
2. când parcurgi liniile e suficient sa începi de la 2 și să crești i cu 2. nu e obligatoriu în această problema, dar e util să știi cum să faci programul mai rapid
3.algoritmul pentru verificarea primalitatii nu pare corect
uite aici pe scurt
daca e numărul e 0 sau 1 ok primește 0, adică numărul nu este prin
daca numărul este 2 sau 3 numărul este prim, deci ok = 1
și apoi ai for ( int d = 2; d * d <= a[i][j]; d++)
daca gasesti divizor ok primește 0
( celălalta varianta e sa mergi până la radical din numar, nu până la număr / 2)
4. ok trebuie sa aibă valoarea 0 de fiecare dată când se parcurge linia.
for ...
for ...
ok = 0;
și după verifici daca e prim, etc
succes