Cod sursa(job #2439362)

Utilizator CuriosaurusIonita Lucian Andrei Curiosaurus Data 15 iulie 2019 18:29:14
Problema Suma si numarul divizorilor Scor 0
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
long a[1000000], b[1000000];
int k = 0;

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

void ssndf(int n, FILE **write)
{
    int i = 0, nr = 2, s = n + 1, ok;
    while(a[i] <= sqrt(n))
    {
        if(n % a[i] == 0)
        {
            nr++;
            s = s + a[i];
            if(sqrt(n) != a[i])
            {
                nr++;
                s = s + (n / a[i]);
            }
        }
        i++;
    }
    fprintf(*write, "%d %d\n", nr, s % 9973);
}
int main()
{
    FILE *read = fopen("ssnd.in", "r");
    FILE *write = fopen("ssnd.out", "w");

    int n;
    long  x;
    ciur();
    fscanf(read, "%d", &n);
    for(int i = 0; i < n; i++)
    {
        fscanf(read, "%li", &x);
        ssndf(x, &write);
    }

    fclose(read);
    fclose(write);
    return 0;
}