Cod sursa(job #1193491)

Utilizator Mirc100Mircea Octavian Mirc100 Data 31 mai 2014 21:30:02
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<fstream>
#include<math.h>

using namespace std;
const long MAX=1000001;
bool prim[MAX];
void eratostene(){

    for(long i=2;i<MAX;i++){
    	if(prim[i]==0){
			for(long j=i*2;j<MAX;j+=i)
    			prim[j]=1;
		}			
	}
}

int main(){
	ifstream fin("ssnd.in");
    ofstream fout("ssnd.out");
    int n,nr;
    fin>>n;
    eratostene();
    long  long x,sum,div,d;
    while(fin>>x){ 
		nr=1; //nr de div
		sum=1;//suma div
	
		for(long i=2;i<MAX;i++){
		
			if(prim[i]==0){
	
				d=0;
	
				while(x%i==0){
					d++;
					x/=i;
				}
			
				if(d>0){
					
					nr*=(d+1);
					sum*=(((long long)pow(i,d+1)-1)/(i-1));
					sum%=9973;
				}
				if(x==1)
					break;
			}
		}	

		fout<<nr<<" "<<sum<<"\n";
		
    }
    return 0;
}