#include<cstdio> #define MAX 1010 using namespace std; int crivo[MAX + 1]; int primos[MAX + 1]; int n_primos = 0; void init_crivo() { for (int i = 2; i <= MAX; i++) if(!crivo[i]) { primos[n_primos++] = i; for (int j = i; i * j <= MAX; j++) crivo[i * j] = 1; } } int main() { int n, m, cont; init_crivo(); while(scanf("%d", &n)) { if (n == 0) break; cont = 0; m = n; bool divide; for (int i = 0; primos[i] * primos[i] <= n; i++) { divide = false; while(n % primos[i] == 0) n /= primos[i], divide = true; if(divide)cont++; } if(n != 1) cont++; printf("%d : %d\n", m, cont); } return 0; }
miércoles, 19 de octubre de 2011
10699 - Count the factors - UVA
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario