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

Cerința

Se dau n numere naturale. Calculați suma obținută prin adunarea celui mai mare divizor prim a fiecărui număr dat.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi n numere naturale.

Date de ieșire

Programul va afișa pe ecran numărul S, reprezentând suma ceruta.

Restricții și precizări1 ≤ n ≤ 10000cele n numere citite vor fi mai mari decât 1 și mai mici decât 1.000.000.000
Exemplu

Intrare

9 7 30 2 17 14 10 9 3 13

Ieșire

62 Explicație

7 + 5 + 2 + 17 + 7 + 5 + 3 + 3 + 13 = 62

Răspunsuri la întrebare

Răspuns de ardyarde
2
Observatie:
Exemplul e gresit. La intrare sunt 10 numere. Cu acele numere raspunsul corect ar fi 3 + 7 + 5 + 2 + 17 + 5 + 3 + 3 + 13  = 65. Aparent primul 9 a fost adaugat din greseala. Acea iesire este valabila doar daca numerele de intrare sunt 7 30 2 17 14 10 9 3 13.

Aici ai programul:

#include <iostream>
using namespace std;
int main()
{
  int n,i,j,maxim,S=0,x,k;
  cout<<"n=";
  cin>>n;
  int a[n];
  for(i=0;i<n;i++)
    cin>>a[i];
  for(i=0;i<n;i++)
  {
    maxim=0;
    for(j=2;j<=a[i];j++)
    {
      x=0;
      if(a[i]%j==0)
      {
       for(k=1;k<=j;k++)
        if(j%k==0)
         x++;
        if(x==2)
         maxim=j;
      }
    }
    S+=maxim;
  }
  cout<<S;
  return 0;
}



bocatudor43: Bun ,mersi mult.
Alte întrebări interesante