Informatică, întrebare adresată de IonutzPadurariu, 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ări
1 ≤ n ≤ 10000
cele n numere citite vor fi mai mari decât 1 și mai mici decât 1.000.000.000

c++

Răspunsuri la întrebare

Răspuns de radutanasa86
0
#include <bits/stdc++.h>
using namespace std;
inline int Prim(int x)
{
    int i;
    if(x<=1)return 0;
    if(x==2)return 1;
    if(x%2==0)return 0;
    for(i=3;i*i<=x;i++)
        if(x%i==0)return 0;
    return 1;
}
inline int Verificare(int x)
{
    int i,mx=0;
    if(Prim(x)==1)
        return x;
    for(i=2;i*i<x;i++)
        if(x%i==0 and Prim(i)==1)
        {
            mx=max(mx,i);
            if(Prim(x/i)==1)
                mx=max(mx,x/i);
        }
        if(i*i==x and Prim(i)==1)
            mx=max(mx,i);
    return mx;
}
int main()
{
    int i,x,n,sol=0;
    cin>>n;
    for(i=1;i<=n;i++)
    {
        cin>>x;
        sol+=Verificare(x);
    }
    cout<<sol<<"\n";
}



IonutzPadurariu: poti transforma asta in ceva mai simplu de inteles pt un elev de clasa a IX-a?
IonutzPadurariu: sunt la inceput
express: mai simplu inseamna mai putin eficient...problema de mai sus este nu numai eficienta dar si elegant redactata. Chiar daca esti intr-a IX-a ...daca tot ai cerut sa ti se rezolve o astfel de problema ...pune mana pe debuger si analizeaz-o pas cu pas.
express: Daca prin simplu intelegi totusi ...fara subprograme... atunci ar fi de inteles...in debug pentru a vedea ce face un subprogram tastezi : Shift + F7. Succes!
condratcosmin28: Iar incepe apostolu cu "pune mane pe un debuger" . Da taci odata .
express: condratcosmin28 - cu 65 de puncte ale tale nu prea esti bagat in seama ...pune mana si munceste fa-ti puncte si apoi vei avea si dreptul sa comentezi...deocamdata "ciocul mic"
condratcosmin28: Auzi-l ma pe el :))
condratcosmin28: Crezi ca eu nu am ce face , sa stau toata ziua pe brainly?
express: foarte bine...succes in ceea ce faci!
Alte întrebări interesante