Cod sursa(job #650683)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 18 decembrie 2011 18:28:23
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
long long j,y,v[1000001],k;
int prim[100001];
void ciur (){
	prim[1]=2;
	k=1;
	for(int i=3;i<=1000000;i+=2)
		if(!v[i]){
			k++;
			prim[k]=i;
			for(j=i+i;j<=1000000;j+=i)
				v[j]=i;
		}
}
void determinare(long long y){
	long long nr, s, t, i, ex;
	nr=s=1;
	for(i=1;prim[i]*prim[i]<=y;i++){
		if(y%prim[i]==0){
			ex=1;
		    t=prim[i];
			while(y%prim[i]==0){
				t=t*prim[i];
				ex++;
				y/=prim[i];
			}
			nr*=ex;
			s*=(t-1)/(prim[i]-1)%9973;
		}
	}
	if(y!=1){
		s*=(y*y-1)/(y-1)%9973;
		nr*=2;
	}
	fout<<nr<<" "<<s%9973<<"\n";
}
int main (){
	long long n ,w;
	fin>>n;
	ciur();
	for(int j=1;j<=n;j++){
		fin>>w;
		determinare(w);
	}
	return 0;
}