Cod sursa(job #1973528)

Utilizator 00MikeComputer00Mihnea Andreescu 00MikeComputer00 Data 25 aprilie 2017 11:58:19
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.3 kb
#include <fstream>
using namespace std;
ifstream cin("ssnd.in");
ofstream cout("ssnd.out");
const int w=100000000005;
bool v[w+10];
int main()
{
    v[1]=1;
    int n,a,i,j,k;
    for(i=4;i<=w;i=i+2)
        v[i]=1;
    for(i=3;i<=w;i++)
        if(v[i]==0)
            for(j=2*i;j<=w;j=j+i)
            v[j]=1;
    cin>>n;
    for(i=1;i<=n;i++)
    {
        cin>>a;
        int s1=1,s2=1;
        for(j=1;j*j<=a;j++)
        {
            if(a%j==0)
            {
                if(v[j]==0)
                {
                    int p=j,s=0;
                    while(a%p==0)
                    {
                        s++;
                        p=p*j;
                    }
                    s1=s1*(s+1);
                    s2=(s2*(p-1)/(j-1))%9973;
                }
                if(j*j==a)
                    break;
                if(v[a/j]==0)
                {
                    int p=a/j,s=0;
                    while(a%p==0)
                    {
                        s++;
                        p=p*a/j;
                    }
                    s1=s1*(s+1);
                    s2=(s2*(p-1)/(a/j-1))%9973;
                }
            }
        }
        cout<<s1<<" "<<s2<<"\n";
    }
    cin.close();
    cout.close();
    return 0;
}