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 intrareProgramul citește de la tastatură numărul n, iar apoi n numere naturale.
Date de ieșireProgramul 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.000Exemplu
Intrare
9 7 30 2 17 14 10 9 3 13Ieșire
62 Explicație7 + 5 + 2 + 17 + 7 + 5 + 3 + 3 + 13 = 62
Răspunsuri la întrebare
Răspuns de
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;
}
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
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Fizică,
8 ani în urmă
Chimie,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă