diff options
author | darylm503 <darylm503@6f19259b-4bc3-4df7-8a09-765794883524> | 2012-04-16 22:12:42 +0000 |
---|---|---|
committer | darylm503 <darylm503@6f19259b-4bc3-4df7-8a09-765794883524> | 2012-04-16 22:12:42 +0000 |
commit | 4710c53dcad1ebf3755f3efb9e80ac24bd72a9b2 (patch) | |
tree | 2d17d2388a78082e32f6a97120d707328143543b /AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/fact.py | |
parent | cbc6b5e54599c7391ece99ad3c5313f4dd4ddda6 (diff) | |
download | edk2-platforms-4710c53dcad1ebf3755f3efb9e80ac24bd72a9b2.tar.xz |
AppPkg/Applications/Python: Add Python 2.7.2 sources since the release of Python 2.7.3 made them unavailable from the python.org web site.
These files are a subset of the python-2.7.2.tgz distribution from python.org. Changed files from PyMod-2.7.2 have been copied into the corresponding directories of this tree, replacing the original files in the distribution.
Signed-off-by: daryl.mcdaniel@intel.com
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13197 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/fact.py')
-rw-r--r-- | AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/fact.py | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/fact.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/fact.py new file mode 100644 index 0000000000..2068c85bdc --- /dev/null +++ b/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/fact.py @@ -0,0 +1,49 @@ +#! /usr/bin/env python
+
+# Factorize numbers.
+# The algorithm is not efficient, but easy to understand.
+# If there are large factors, it will take forever to find them,
+# because we try all odd numbers between 3 and sqrt(n)...
+
+import sys
+from math import sqrt
+
+def fact(n):
+ if n < 1:
+ raise ValueError('fact() argument should be >= 1')
+ if n == 1:
+ return [] # special case
+ res = []
+ # Treat even factors special, so we can use i += 2 later
+ while n % 2 == 0:
+ res.append(2)
+ n //= 2
+ # Try odd numbers up to sqrt(n)
+ limit = sqrt(n+1)
+ i = 3
+ while i <= limit:
+ if n % i == 0:
+ res.append(i)
+ n //= i
+ limit = sqrt(n+1)
+ else:
+ i += 2
+ if n != 1:
+ res.append(n)
+ return res
+
+def main():
+ if len(sys.argv) > 1:
+ source = sys.argv[1:]
+ else:
+ source = iter(raw_input, '')
+ for arg in source:
+ try:
+ n = int(arg)
+ except ValueError:
+ print arg, 'is not an integer'
+ else:
+ print n, fact(n)
+
+if __name__ == "__main__":
+ main()
|