summaryrefslogtreecommitdiffstats
path: root/Demo
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2009-10-10 21:55:11 (GMT)
committerGeorg Brandl <georg@python.org>2009-10-10 21:55:11 (GMT)
commita0bcc27e65e2cc0fd515ae91d88bfa74a0dd4a83 (patch)
tree40d0c02023bd0bc63827afb4c8a03a59e8163243 /Demo
parent3d072c95873798bcaa628705d4c95390aaa317c4 (diff)
downloadcpython-a0bcc27e65e2cc0fd515ae91d88bfa74a0dd4a83.zip
cpython-a0bcc27e65e2cc0fd515ae91d88bfa74a0dd4a83.tar.gz
cpython-a0bcc27e65e2cc0fd515ae91d88bfa74a0dd4a83.tar.bz2
Modernize factorisation demo (mostly augassign.)
Diffstat (limited to 'Demo')
-rwxr-xr-xDemo/scripts/fact.py36
1 files changed, 19 insertions, 17 deletions
diff --git a/Demo/scripts/fact.py b/Demo/scripts/fact.py
index c030187..8ee2588 100755
--- a/Demo/scripts/fact.py
+++ b/Demo/scripts/fact.py
@@ -9,39 +9,41 @@ 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
+ 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 = i+2 later
- while n%2 == 0:
+ # Treat even factors special, so we can use i += 2 later
+ while n % 2 == 0:
res.append(2)
- n = n//2
+ n //= 2
# Try odd numbers up to sqrt(n)
- limit = sqrt(float(n+1))
+ limit = sqrt(n+1)
i = 3
while i <= limit:
- if n%i == 0:
+ if n % i == 0:
res.append(i)
- n = n//i
+ n //= i
limit = sqrt(n+1)
else:
- i = i+2
+ i += 2
if n != 1:
res.append(n)
return res
def main():
if len(sys.argv) > 1:
- for arg in sys.argv[1:]:
- n = eval(arg)
- print n, fact(n)
+ source = sys.argv[1:]
else:
+ source = iter(raw_input, '')
+ for arg in source:
try:
- while 1:
- n = input()
- print n, fact(n)
- except EOFError:
- pass
+ n = int(arg)
+ except ValueError:
+ print arg, 'is not an integer'
+ else:
+ print n, fact(n)
if __name__ == "__main__":
main()