Cod sursa(job #1193484)

Utilizator Mirc100Mircea Octavian Mirc100 Data 31 mai 2014 21:16:44
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<fstream>
#include<iostream>
using namespace std;
const long MAX=1000001;
bool prim[MAX];
void eratostene(){

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

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

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