Cod sursa(job #238026)

Utilizator DraStiKDragos Oprica DraStiK Data 31 decembrie 2008 10:38:12
Problema Sum Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <stdio.h>
#include <string.h>
int a[2005],b[2005],e[2005];
int t[1005];
int n,m,s,max;
void desc (int n)
{
	int f,p,i;
	f=2;
	for (i=1; i<=max; ++i)
		e[i]=0;
    while (n!=1)
    {
          p=0;
          while (n%f==0)
          {
                n/=f;
                p++;
          }
          if (p!=0)
            e[f]=1;
          f++;
    }
}
int main ()
{
    freopen ("sum.in","r",stdin);
    freopen ("sum.out","w",stdout);
    int i,j,k;
    scanf ("%d",&m);
    for (i=1; i<=m; ++i)
    {
        scanf ("%d",&t[i]);
        if (2*t[i]>max)
			max=2*t[i];
	}
	for (i=1; i<max; ++i)
	   a[i]=1;
	for (i=1; i<=m; ++i)
	{
		for (k=1; k<2*t[i]; ++k)
			b[k]=a[k];
		desc (t[i]);
		s=0;
        for (k=1; k<2*t[i]; ++k)
        {
            if (e[k])
            {
                for (j=k; j<2*t[i]; j+=k)
                    if (b[j])
                        b[j]=0;
            }
            if (b[k])
                s+=k;
        }
        printf ("%d\n",s);
    }
	return 0;
}