Cod sursa(job #1539646)

Utilizator andreea4aAndreea Knopf andreea4a Data 1 decembrie 2015 11:17:09
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include<stdio.h>
using namespace std;
char ciur[1000001];
int main(){
    int i,n,pri,prim,p;
    long long a,nrdiv,sumdiv,ca,prod;
    freopen("ssnd.in","r",stdin);
    freopen("ssnd.out","w",stdout);
    scanf("%d",&n);
    prim=2;
    while(prim*prim<=1000000){
        for(i=prim;i*prim<=1000000;i++)
            ciur[i*prim]=1;
        prim++;
        while(ciur[prim]==1)
            prim++;
    }
    for(i=1;i<=n;i++){
        scanf("%lld",&a);
        ca=a;
        prim=2;
        nrdiv=1;
        sumdiv=1;
        while(ca!=1){
            prod=1;
            p=0;
            while(ca%prim==0){
                p++;
                ca=ca/prim;
                prod=prod*prim;
            }
            nrdiv=nrdiv*(p+1);
            prod=prod*prim;
            sumdiv=sumdiv*(prod-1)/(prim-1);
            prim++;
            while(ciur[prim]==1)
                prim++;
        }
        printf("%I64d %I64d\n",nrdiv,sumdiv);
    }
    return 0;
}