Advertisement
Kyrexar

Factores primos

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