Cod sursa(job #719116)

Utilizator alexa_mihaltanMihaltan Alexandra alexa_mihaltan Data 21 martie 2012 14:35:18
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
/*4. Divizori
Se da un numar natural N (1 <= N <= 2.000.000.000).
 Sa se scrie o functie care calculeaza numarul de divizori ai lui N.
 Indicatie: orice numar natural N se poate scrie sub forma
 N=p1^k1 * p2^k2 *...* pr^kr, unde p1,p2...pr sunt numere prime.*/
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;

int ciurErat(int n)
{
	char a[100];
	int i, j;
	for(i=2;i*i<=n;i++)
		a[i]=0;
	for (i = 2;(i*i)<= n;i++)
	{
		if (a[i]==0)
				{
			for (j=i+i;j<=n;j=i+j)
				a[j]=1;
				}
	}
	int nrdiv=1;
	for(i=2;i*i<=n;i++)
		if ((a[i]==0)/* and (n%a[i]==0)*/)
			nrdiv++;
	return nrdiv;
}
int main()
{
	int n;
	ifstream fin;
	fin.open("ciur.in");
	ofstream fout;
	fout.open("ci.out");
	fin>>n;
	fout<< ciurErat(n);
	fin.close();
	fout.close();
	return 0;
}