Cod sursa(job #2000829)

Utilizator Rodik_RodyRodica Vasilescu Rodik_Rody Data 14 iulie 2017 20:45:40
Problema Suma si numarul divizorilor Scor 30
Compilator c Status done
Runda Arhiva educationala Marime 1.24 kb
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define File_in "ssnd.in"
#define File_out "ssnd.out"
#define MAX 1000000000
char ciur[MAX];
void ssnd (int n,int *nr, int *s){
    int i,a,p;
    *nr = 1;
    *s = 1;

    if(n == 1 || n == 0 ){
        *nr = n;
        *s = n;
    }
    else{
        for ( i= 2; n!=1; i++ )
            if( n % i == 0){
                a = 0;
                while(n%i==0){
                    n/=i;
                    a++;
                }
                *nr=*nr*(a+1);
                *s= *s*((pow (i, a+1)-1)/(i-1));
                *s%=9973;
            }

    }
}

int main()
{

    freopen(File_in, "r", stdin);
    freopen(File_out, "w", stdout);

    int t,i,j,n,nr,s;
    scanf("%d",&t);

    ciur[1]=ciur[0]=1;
    for ( i = 2; i*i <= 1000000; i++){
        if( ciur[i] == 0)
            for(j= i*i; j <= 1000000; j +=i)
                ciur[j] = 1;
    }

    for ( i = 1; i <= t; i++)
    {
        scanf("%d",&n);
        if(ciur[n]==0)
            printf("2 %d\n",1+n);
        else
            if(n!=1){
                ssnd(n,&nr,&s);
                printf("%d %d\n",nr,s);
            }
        else printf("1 1\n");
    }

    return 0;
}