Advertisement
Kyrexar

Factores (funcion)

Apr 23rd, 2012
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.30 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int primo ( int a ){
  5.     int b, p, i=0;
  6.  
  7.     for ( b=a ; b>=1 ; b-- ) if ( a%b==0 ) i++;
  8.     if ( i>2 ) p=0;
  9.     else p=1;
  10.  
  11.     return p;
  12. }
  13.  
  14. int factor ( int a ){
  15.     int b, n=0, e=0, num[1000], exp[1000], i=0;
  16.  
  17.     if( primo(a)==1 ) printf(" %d es primo y sus factores primos son %d y 1 \n ",a,a);
  18.     else{ // Si "a" NO es primo
  19.        for( b=2 ; b<=a ; b++ ){
  20.           e=0;
  21.           if ( primo(b)==1 && a%b==0 ){     // Si el "b" es primo y divisor de "a"
  22.              num[i]=b;                      // lo anota en el vector numerador
  23.              while( a%b==0 ){ a=a/b; e++; } // Entonces comprueba cuantas veces es divisor de "a"
  24.              exp[i]=e;                      // y lo anota en el vector exponente
  25.              i++;
  26.           }
  27.        }
  28.     for( n=0 ; n<i ; n++ )
  29.        printf(" %d^%d",num[n],exp[n]);
  30.     printf(" \n ");
  31.     }
  32. }
  33.  
  34. int main(){
  35.     int a, b;
  36.    
  37.     printf(" \n Un numero menor o igual que 0 te sacara del programa \n ");
  38.     printf(" \n Introduce un numero para obtener sus factores primos: ");
  39.     scanf("%d",&a);
  40.    
  41.     while( a>0 ){
  42.        if( a<=0 ) return 0;
  43.        factor(a);
  44.        printf(" \n Introduce un numero para obtener sus factores primos: ");
  45.        scanf("%d",&a);
  46.     }
  47.     return 0;
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement