summaryrefslogtreecommitdiffstats
path: root/Demo/scripts/fact.py
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2010-12-30 21:33:07 (GMT)
committerGeorg Brandl <georg@python.org>2010-12-30 21:33:07 (GMT)
commit7fafbc95c0c963438197c9a43fe893c4ea6fe759 (patch)
tree5c9ceda4bdc5260236a230554b9ed56b8c0cdbd3 /Demo/scripts/fact.py
parent6f17e2df29a865a29447531e89fb22be710e382d (diff)
downloadcpython-7fafbc95c0c963438197c9a43fe893c4ea6fe759.zip
cpython-7fafbc95c0c963438197c9a43fe893c4ea6fe759.tar.gz
cpython-7fafbc95c0c963438197c9a43fe893c4ea6fe759.tar.bz2
More cleanup: Move some demos into a dedicated Tools/demo dir, move 2to3 demo to Tools, and remove all the other Demo content.
Diffstat (limited to 'Demo/scripts/fact.py')
-rwxr-xr-xDemo/scripts/fact.py49
1 files changed, 0 insertions, 49 deletions
diff --git a/Demo/scripts/fact.py b/Demo/scripts/fact.py
deleted file mode 100755
index 2a3bef2..0000000
--- a/Demo/scripts/fact.py
+++ /dev/null
@@ -1,49 +0,0 @@
-#! /usr/bin/env python3
-
-# 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(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()