Cod sursa(job #650331)

Utilizator FIIAilincaiPascBogdan Valentin FIIAilincaiPasc Data 17 decembrie 2011 21:13:43
Problema Suma si numarul divizorilor Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.71 kb
#include<stdio.h>
#include<math.h>
int n,i,j,p,nr,s;char a[10000000];
int t,v[1001],c;
int main()
{FILE *fin,*fout;
fin=fopen("ssnd.in","r");
fout=fopen("ssnd.out","w");
fscanf(fin,"%d",&t);
for(c=1;c<=t;c++)fscanf(fin,"%d",&v[c]);
for(c=1;c<=t;c++)
{
for(i=2;i<=sqrt(v[c]);i++)a[i]=1;
p=2;nr=2;s=1+v[c];
while(p*p<=sqrt(v[c]))
        {
        j=p*p;
        while(j<=sqrt(v[c]))
              {
              a[j]=0;
              j+=p;
              }
        do {p+=1;} while(!a[p]);
       }
for(i=2;i<=sqrt(v[c]);i++) if(a[i]&&(!(v[c]%i)))
{
nr++;s+=i;
if(((v[c]/i)!=i)&&(!(v[c]%i))) {nr++;s+=(v[c]/i);}
}         
fprintf(fout,"%d %d\n",nr,s);
}
fclose(fin);fclose(fout);
return 0;
}