Cod sursa(job #2000484)

Utilizator Rodik_RodyRodica Vasilescu Rodik_Rody Data 13 iulie 2017 20:00:20
Problema Suma si numarul divizorilor Scor 30
Compilator c Status done
Runda Arhiva educationala Marime 1.23 kb
#include <stdio.h>
#include <stdlib.h>
#define File_in "ssnd.in"
#define File_out "ssnd.out"
#define MAX 2000000
char prim[MAX];
int nr_div (int n){
    int nr = 2,i;
    if(n == 1 || n == 0 )
        return 1;
    for ( i= 2; i * i < n; i++ )
        if( n % i == 0)
            nr += 2;
     if ( i * i == n)
        nr++;
     return nr;
}
int sum_div (int n){
    int s = 1+ n ,i;
    if(n == 1 || n == 0 )
        return n;
    for ( i= 2; i * i < n; i++ )
        if( n % i == 0){
            s += i + n/i;
            s%=9973;
        }
     if ( i * i == n)
        s+=i;
     return s%9973;
}
int main()
{
    freopen(File_in, "r", stdin);
    freopen(File_out, "w", stdout);
    int t,i,j,k,n,nr;
    scanf("%d",&t);
    prim[1]=1;
    for ( i = 1; i <= t; i++)
    {
        scanf("%d",&n);
        for ( j = 2; j*j <= n; j++){
            if( prim[j] == 0)
                for(k= j*j; k<= n; k +=j)
                    prim[n] = 1;
        }
        for(j=1; j<=n; j++)
            nr=0;
        if(prim[n]==0)
            printf("2 %d\n",1+n);
        else
            if(n!=1)
                printf("%d %d\n", nr_div(n), sum_div(n));
        else printf("1 1\n");
    }

    return 0;
}