Cod sursa(job #1557976)

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