Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- jagy@phobeusjunior:~/old drive/home/jagy/Cplusplus$ ./factor
- number to be factored ? 35283528
- = 2^3 * 3^2 * 7^2 * 73 * 137
- jagy@phobeusjunior:~/old drive/home/jagy/Cplusplus$
- string stringify(int x)
- {
- ostringstream o;
- o << x ;
- return o.str();
- }
- string Factored(int i)
- {
- string fac;
- fac = " = ";
- int p = 2;
- int temp = i;
- if (temp < 0 )
- {
- temp *= -1;
- fac += " -1 * ";
- }
- if ( 1 == temp) fac += " 1 ";
- if ( temp > 1)
- {
- int primefac = 0;
- while( temp > 1 && p * p <= temp)
- {
- if (temp % p == 0)
- {
- ++primefac;
- if (primefac > 1) fac += " * ";
- fac += stringify( p) ;
- temp /= p;
- int exponent = 1;
- while (temp % p == 0)
- {
- temp /= p;
- ++exponent;
- } // while p is fac
- if ( exponent > 1)
- {
- fac += "^" ;
- fac += stringify( exponent) ;
- }
- } // if p is factor
- ++p;
- } // while p
- if (temp > 1 && primefac >= 1) fac += " * ";
- if (temp > 1 ) fac += stringify( temp) ;
- } // temp > 1
- return fac;
- } // Factored
- def PrimeSieve(curNum, inputNum):
- prime = True
- addSet = set()
- for cp in PrimeSet:
- daPrime, daSkip = cp
- if curNum == daSkip:
- prime = False
- addSet.add((daPrime, daSkip + daPrime))
- if curNum == inputNum:
- inputNumPF_Set.add( daPrime )
- if prime:
- addSet.add((curNum, curNum + curNum))
- PrimeSet.update(addSet)
- return prime
- while True:
- inputNum = int(input('Integer to be factored = '))
- PrimeSet = set()
- inputNumPF_Set = set() # will be be populated with the prime factors
- # # of inpuutNum, For example, for inputNum = 63,
- # # inputNumPF_Set = {3, 7}
- inputNumPF_Set = set()
- for x in range(2, inputNum + 1):
- isPrime = PrimeSieve(x, inputNum)
- inputNumFZ = set()
- if isPrime:
- inputNumFZ.add( (inputNum, 1) )
- else:
- unfactored = inputNum
- for p in inputNumPF_Set:
- exp = 0
- r = 0
- while r == 0:
- xxfactored, r = divmod(unfactored, p)
- if r == 0:
- exp = exp + 1
- unfactored = xxfactored
- else:
- inputNumFZ.add( (p, exp) )
- print('The prime factorization of', inputNum, 'is given by', inputNumFZ)
- Integer to be factored = 24
- The prime factorization of 24 is given by {(3, 1), (2, 3)}
- Integer to be factored = 63
- The prime factorization of 63 is given by {(3, 2), (7, 1)}
- Integer to be factored = 156
- The prime factorization of 156 is given by {(13, 1), (3, 1), (2, 2)}
- Integer to be factored = 72
- The prime factorization of 72 is given by {(3, 2), (2, 3)}
- Integer to be factored = 10403
- The prime factorization of 10403 is given by {(101, 1), (103, 1)}
Add Comment
Please, Sign In to add comment