muntasir007

Untitled

Feb 20th, 2016
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define MAX 10000000
  4. vector <int> primes;
  5. int prime[MAX];
  6.  
  7. int setBit( int n, int position ) {
  8. n = n | ( 1 << position );
  9. return n;
  10. }
  11. bool checkBit(int n, int position) {
  12. return n & ( 1 << position );
  13. }
  14. void primeGenerator( int n ) {
  15. int x = sqrt( n );
  16. primes.push_back(2);
  17. prime[0] = setBit( prime[0], 0 );
  18. prime[0] = setBit( prime[0], 1 );
  19. for( int i = 4; i <= n; i += 2 )
  20. prime[ i >> 5 ] = setBit( prime[ i >> 5 ], i & 31 );
  21. for( int i = 3; i <= x; i += 2 ) {
  22. if( !checkBit( prime[ i >> 5 ], i & 31 ) ) {
  23. primes.push_back(i);
  24. for( int j = i+i; j <= n; j += i )
  25. prime[ j >> 5 ] = setBit( prime[ j >> 5 ], j & 31 );
  26. }
  27. }
  28. return;
  29. }
  30.  
  31. int main() {
  32. primeGenerator(10000000);
  33. int T;
  34.  
  35. scanf("%d", &T);
  36. int cs;
  37.  
  38. for (cs=1; cs<=T; cs++) {
  39. vector <int> ber;
  40. vector <int> aer;
  41. long long int a, b;
  42. scanf("%lld %lld", &a, &b);
  43. long long int i;
  44. for (i=0; primes[i]*primes[i] <= b; i++) {
  45. if (b % primes[i] == 0) {
  46. while (b%primes[i] == 0) {
  47. ber.push_back(primes[i]);
  48. b/=primes[i];
  49. }
  50. }
  51. }
  52. for (i=0; i<ber.size(); i++) printf("%d ", ber[i]);
  53. }
  54. return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment