Cerinţa
Se dau n numere naturale. Calculaţi suma obținută prin adunarea primului divizor prim al fiecărui număr citit.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii.
Date de ieşire
Programul afișează pe ecran numărul S, reprezentând suma cerută.
Restricţii şi precizări
1 ≤ n ≤ 1000
cele n numere citite vor fi mai mari decât 1 și mai mici decât 1.000.000.000
Exemplu
Intrare
5
15 13 39 49 25
Ieșire
31
eu mi-am facut un cod si daca puteti sa il editati? imi da 80(limita de timp)
#include
using namespace std;
int n,a,i,d,p=0;
int main()
{
cin>>n;
while(n){
cin>>a;
i=3; d=0;
if(a%2==0){
d=1;
p+=2;
}else{
while(d==0){
if(a%i==0){
d=1;
p+=i;
}else{
i+=2;
}
}
}
n--;
}
cout<
return 0;}
Răspunsuri la întrebare
In linia 1, ar trebui sa se adauge "#include <iostream>" pentru a include biblioteca necesara pentru a utiliza functiile de intrare/iesire (cin/cout).
In linia 5, ar trebui sa se adauge un "int p=0;" pentru a initializa variabila p care va fi utilizata pentru suma obtinuta prin adunarea primului divizor prim al fiecarui numar citit.
In linia 8, ar trebui sa se adauge un if(a==2) p+=2; inainte de while pentru a lua in considerare cazul in care numarul introdus este 2, care este prim si nu poate fi divizat.
In linia 8, ar trebui sa se adauge un for(i=3; i*i<=a; i+=2) pentru a lua in considerare cazul in care numarul introdus este mai mare decat 2 si pentru a verifica daca acesta este divizibil cu un numar prim mai mare decat 2, in acest mod optimizand algoritmul.
In linia 10, ar trebui sa se adauge un if(i*i>a) break; pentru a iesi din bucla cand nu mai exista numere prime care sa fie divizori ai numarului introdus, acest lucru optimizand algoritmul.
In linia 14, ar trebui sa se adauge "n--;" dupa citirea fiecarui numar pentru a tine evidenta numarului de numere ramase de citit.
In linia 14, ar trebui sa se adauge "<< p" la finalul comenzii "cout" pentru a afisa suma obtinuta prin adunarea primului divizor prim al fiecarui numar citit.
Uite aici un alt program care ar functiona:
#include <iostream>
using namespace std;
int main() {
int n, a, p = 0;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a;
for (int j = 2; j <= a; j++) {
if (a % j == 0) {
p += j;
break;
}
}
}
cout << p;
return 0;
}