Cod sursa(job #861635)

Utilizator lehman97Dimulescu David lehman97 Data 21 ianuarie 2013 20:08:01
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <stdio.h>
#include <math.h>


using namespace std;

FILE *f=fopen("ssnd.in","r");
FILE *g=fopen("ssnd.out","w");

int i,a,nr,n,v[80000];

void ciur()
{
    int i,j;
    bool ok;
    n=1;
    v[n]=2;
    for(i=3;i<=100000;i+=2)
    {
        ok=1;
        for(j=1;j<=n;j++)
        if(i%v[j]==0){ok=0;break;}
        if(ok) v[++n]=i;

    }
}

void desc(int nr)
{
    int i=0,dv=1,d;
    int cnr=nr;
    while(nr>1 && v[i]<sqrt(cnr))
    {
        i++;
        d=1;
        while(nr%v[i]==0){d++;nr/=v[i];}
        dv*=d;

    }
    if(nr>1)dv++;
    fprintf(g,"%d\n",dv);


}



int main()
{
    ciur();
    fscanf(f,"%d",&a);
    for(i=1;i<=a;i++)
    {
        fscanf(f,"%d",&nr);
        desc(nr);
    }

    fclose(g);
    return 0;
}