Cod sursa(job #238027)

Utilizator DraStiKDragos Oprica DraStiK Data 31 decembrie 2008 10:40:04
Problema Sum Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <stdio.h>
#include <string.h>
char a[200005],b[200005],e[200005];
int t[100005];
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]=1;
            }
            if (!b[k])
                s+=k;
        }
        printf ("%d\n",s);
    }
	return 0;
}