Guest User

Untitled

a guest
Nov 19th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.85 KB | None | 0 0
  1. jagy@phobeusjunior:~/old drive/home/jagy/Cplusplus$ ./factor
  2. number to be factored ? 35283528
  3.  
  4. = 2^3 * 3^2 * 7^2 * 73 * 137
  5. jagy@phobeusjunior:~/old drive/home/jagy/Cplusplus$
  6.  
  7.  
  8. string stringify(int x)
  9. {
  10. ostringstream o;
  11. o << x ;
  12. return o.str();
  13. }
  14.  
  15. string Factored(int i)
  16. {
  17. string fac;
  18. fac = " = ";
  19. int p = 2;
  20. int temp = i;
  21. if (temp < 0 )
  22. {
  23. temp *= -1;
  24. fac += " -1 * ";
  25. }
  26.  
  27. if ( 1 == temp) fac += " 1 ";
  28. if ( temp > 1)
  29. {
  30. int primefac = 0;
  31. while( temp > 1 && p * p <= temp)
  32. {
  33. if (temp % p == 0)
  34. {
  35. ++primefac;
  36. if (primefac > 1) fac += " * ";
  37. fac += stringify( p) ;
  38. temp /= p;
  39. int exponent = 1;
  40. while (temp % p == 0)
  41. {
  42. temp /= p;
  43. ++exponent;
  44. } // while p is fac
  45. if ( exponent > 1)
  46. {
  47. fac += "^" ;
  48. fac += stringify( exponent) ;
  49. }
  50. } // if p is factor
  51. ++p;
  52. } // while p
  53. if (temp > 1 && primefac >= 1) fac += " * ";
  54. if (temp > 1 ) fac += stringify( temp) ;
  55. } // temp > 1
  56. return fac;
  57. } // Factored
  58.  
  59. def PrimeSieve(curNum, inputNum):
  60. prime = True
  61. addSet = set()
  62. for cp in PrimeSet:
  63. daPrime, daSkip = cp
  64. if curNum == daSkip:
  65. prime = False
  66. addSet.add((daPrime, daSkip + daPrime))
  67. if curNum == inputNum:
  68. inputNumPF_Set.add( daPrime )
  69. if prime:
  70. addSet.add((curNum, curNum + curNum))
  71. PrimeSet.update(addSet)
  72. return prime
  73.  
  74. while True:
  75. inputNum = int(input('Integer to be factored = '))
  76. PrimeSet = set()
  77. inputNumPF_Set = set() # will be be populated with the prime factors
  78. # # of inpuutNum, For example, for inputNum = 63,
  79. # # inputNumPF_Set = {3, 7}
  80. inputNumPF_Set = set()
  81. for x in range(2, inputNum + 1):
  82. isPrime = PrimeSieve(x, inputNum)
  83. inputNumFZ = set()
  84. if isPrime:
  85. inputNumFZ.add( (inputNum, 1) )
  86. else:
  87. unfactored = inputNum
  88. for p in inputNumPF_Set:
  89. exp = 0
  90. r = 0
  91. while r == 0:
  92. xxfactored, r = divmod(unfactored, p)
  93. if r == 0:
  94. exp = exp + 1
  95. unfactored = xxfactored
  96. else:
  97. inputNumFZ.add( (p, exp) )
  98. print('The prime factorization of', inputNum, 'is given by', inputNumFZ)
  99.  
  100. Integer to be factored = 24
  101. The prime factorization of 24 is given by {(3, 1), (2, 3)}
  102. Integer to be factored = 63
  103. The prime factorization of 63 is given by {(3, 2), (7, 1)}
  104. Integer to be factored = 156
  105. The prime factorization of 156 is given by {(13, 1), (3, 1), (2, 2)}
  106. Integer to be factored = 72
  107. The prime factorization of 72 is given by {(3, 2), (2, 3)}
  108. Integer to be factored = 10403
  109. The prime factorization of 10403 is given by {(101, 1), (103, 1)}
Add Comment
Please, Sign In to add comment