damihenrique

Crivo + Fatorar em num primos

Aug 23rd, 2014
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.62 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <stdio.h>
  4. #include <cstring>
  5. #include <vector>
  6. #include <algorithm>
  7. #include <utility>
  8. #include <queue>
  9. #include <map>
  10. #include <stack>
  11. #include <cmath>
  12. #include <set>
  13. #include <ctype.h>
  14. #include <bitset>
  15.  
  16. #define INF 99999999
  17. #define rep(i, a, b) for (int i = int(a); i < int(b); i++)
  18. #define TRvii(c, it) for (vii::iterator it = (c).begin(); it != (c).end(); it++)
  19. #define tr(it, s)  for ( typeof ( s.begin( ) ) it=s.begin( ); it!=s.end( ); it++ )
  20. #define pb push_back
  21. #define clr(a) memset((a),0,sizeof(a))
  22. #define pi 3.1415926535897932384626433832795028841971
  23. #define debug(x) cout << #x << " = " << x << endl;
  24.  
  25. using namespace std;
  26.  
  27. typedef long long ll;
  28. typedef pair < int, int >  ii;
  29. typedef vector < int >  vi;
  30. typedef vector < ii >  vii;
  31.  
  32.  
  33. int p[20000]; int e[20000]; int k;
  34. int prime[200000]; int nprimes;
  35.  
  36. void factor(int n) {
  37.     k = 0;
  38.     for(int j=0; prime[j]*prime[j] <= n; ++j) if ( n%prime[j]==0 ) {
  39.         p[k] = prime[j]; e[k] = 0;
  40.         while ( n%prime[j]==0 ) { n/=prime[j]; e[k]++; }
  41.         ++k;
  42.     }
  43.     if (n!=1) { p[k]=n; e[k] =1; ++k;}
  44. }
  45.  
  46.  
  47. void find_primes(int n) {
  48.    
  49.     nprimes = 1; prime[0] = 2; bool is_prime;
  50.     for(int k=3;k<=n;k+=2) {
  51.         is_prime = true;
  52.         for(int j=0; j<nprimes && prime[j]*prime[j] <= k;++j)
  53.             if (k%prime[j] == 0) {is_prime = false; break;}
  54.         if ( is_prime ) prime[nprimes++] = k;
  55.     }
  56. }
  57.  
  58.  
  59. int main(){
  60.    
  61.     find_primes(100);
  62.     factor(99);
  63.    
  64.     rep(i,0,k+1)
  65.         cout<<p[i]<<"^"<<e[i]<<endl;
  66.  
  67.  
  68.  
  69.     system("pause");
  70.     return 0;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment