Cita:
Iniciado por Pantaláimon De todos modos quizá me estoy pasando de precavido. En una primera vista, con tu solución ya me quedaba satisfecho. La de kutcher y leosansan, no :p
Un saludo!
Corrigo. Ahora en la función imprimir se imprime sólo si ver!=0...otra cosa es que lo aproveche como exponente. Y es que si el exponente es cero sencillamente no es un factor primo y no se imprime:
Código C++:
Ver original#include<stdio.h>
int descompon ( int a , int b , int ver ) ;
int factorizar1 ( int i , int numero , int b , int ver ) ;
void factorizar2 ( int i , int *n , int b , int ver ) ;
void imprimir( int i , int n, int b , int ver ) ;
int main ( void ) {
int ver ;
return descompon ( 1500 , 1550, ver ) , 0 ;
}
int descompon ( int a , int b , int ver ) {
if ( a <= b ) {
factorizar1 ( 2 , a , b , ver ) ;
return descompon ( a + 1 , b , ver ) ;
}
return 0 ;
}
int factorizar1 ( int i , int numero , int b , int ver ) {
int n = numero ;
if ( i <= n ) {
factorizar2 ( i , &n , b , ver ) ;
return factorizar1 ( i + 1 , n , b , ver ) ;
}
return 0 ;
}
void factorizar2 ( int i , int *n , int b , int ver ) {
while ( *n % i == 0 )
*n /= i , ver++ ;
imprimir( i , *n , b , ver ) ;
}
void imprimir( int i , int n, int b , int ver ) {
if ( ver != 0 ) {
if ( ver == 1 && i < n )
else if ( ver == 1 && i > n )
else if ( ver > 1 && i < n )
printf( "%d^%d * " ,i
, ver
) ; else if ( ver > 1 && i > n )
}
}
¡¡¡Saluditos!!!