Cod sursa(job #2112457)

Utilizator NToniBoSSNicolae Tonitza NToniBoSS Data 23 ianuarie 2018 14:58:10
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
using namespace std;
int v[501],y[1001],c[1001],nrp;
char ciur[1001];
void citire(int n)
{
    for(int i=1; i<=n; i++)
        cin>>v[i];
}
void prime()
{
    for(int i=2; i*i<=1000; i++)
        if(ciur[i]==0)
            for(int j=i*i; j<=1000; j+=i)
                ciur[j]=1;
    for(int j=2; j<=1000; j++)
        if(!ciur[j])
            c[++nrp]=j;
}
void verif(int n)
{
    int e,div;
    for(int i=1; i<=n; i++)
    {
        div=1;
        while(c[div]*c[div]<=v[i])
        {
            e=0;
            while(!(v[i]%c[div]))
                e++,v[i]/=c[div];
            if(e==1)
                y[c[div]]++;
            div++;
        }
        if(v[i]-1)
            y[v[i]]=1;
    }
}
void scriere(int n)
{
    for(int i=1; i<=1000; i++)
        if(y[i]!=0)
            cout<<i<<" ";
}
int main()
{
    int n;
    cin>>n;
    citire(n);
    prime();
    verif(n);
    scriere(n);

    return 0;
}