summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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()