Cod sursa(job #949037)

Utilizator OpportunityVlad Negura Opportunity Data 12 mai 2013 10:47:57
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <fstream>
#include <iostream>
#include <cmath>
using namespace std;
ifstream fi("ssnd.in");
ofstream fo("ssnd.out");
#define NMAX 1<<20

int n,i,j,x,a[NMAX];

void f(int val){
	if (!a[val]) {fo << "2 " << (1+val) << "\n"; return;}
	int s=1,nr=1,x=val;
	for (i=2; i<=sqrt(val)+1; i++){
		int nraux=1;
		while (!(x % i)) nraux++,x/=i;
		nr*=nraux;
		s*=(pow(i,nraux)-1)/(i-1);
	}
	fo << nr << ' ' << s << "\n";
}

void ciur(){
	for (i=2; i<NMAX; i++) if (!a[i]) for (j=i+i; j<NMAX; j+=i) a[j]=1;
}

int main(){
	
	ciur();
	
	//for (i=1; i<=50; i++) fo << a[i] << ' ';
	
	fi >> n;
	while (n--){
		fi >> x;
		f(x);
	}
	
	return 0;
}