| 
									
										
										
										
											1996-11-27 19:52:01 +00:00
										 |  |  | #! /usr/bin/env python | 
					
						
							| 
									
										
										
										
											1991-06-04 20:36:54 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1991-12-18 13:45:17 +00:00
										 |  |  | # 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)... | 
					
						
							| 
									
										
										
										
											1991-06-04 20:36:54 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | import sys | 
					
						
							|  |  |  | from math import sqrt | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | error = 'fact.error'		# exception | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def fact(n): | 
					
						
							|  |  |  | 	if n < 1: raise error	# fact() argument should be >= 1 | 
					
						
							| 
									
										
										
										
											1992-01-01 19:35:13 +00:00
										 |  |  | 	if n == 1: return []	# special case | 
					
						
							| 
									
										
										
										
											1991-06-04 20:36:54 +00:00
										 |  |  | 	res = [] | 
					
						
							|  |  |  | 	# Treat even factors special, so we can use i = i+2 later | 
					
						
							| 
									
										
										
										
											1992-01-01 19:35:13 +00:00
										 |  |  | 	while n%2 == 0: | 
					
						
							| 
									
										
										
										
											1991-06-04 20:36:54 +00:00
										 |  |  | 		res.append(2) | 
					
						
							|  |  |  | 		n = n/2 | 
					
						
							|  |  |  | 	# Try odd numbers up to sqrt(n) | 
					
						
							| 
									
										
										
										
											1992-03-30 11:15:49 +00:00
										 |  |  | 	limit = sqrt(float(n+1)) | 
					
						
							| 
									
										
										
										
											1991-06-04 20:36:54 +00:00
										 |  |  | 	i = 3 | 
					
						
							|  |  |  | 	while i <= limit: | 
					
						
							| 
									
										
										
										
											1992-01-01 19:35:13 +00:00
										 |  |  | 		if n%i == 0: | 
					
						
							| 
									
										
										
										
											1991-06-04 20:36:54 +00:00
										 |  |  | 			res.append(i) | 
					
						
							|  |  |  | 			n = n/i | 
					
						
							| 
									
										
										
										
											1991-12-18 13:45:17 +00:00
										 |  |  | 			limit = sqrt(n+1) | 
					
						
							| 
									
										
										
										
											1991-06-04 20:36:54 +00:00
										 |  |  | 		else: | 
					
						
							|  |  |  | 			i = i+2 | 
					
						
							| 
									
										
										
										
											1992-03-30 11:15:49 +00:00
										 |  |  | 	if n != 1: | 
					
						
							|  |  |  | 		res.append(n) | 
					
						
							| 
									
										
										
										
											1991-06-04 20:36:54 +00:00
										 |  |  | 	return res | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def main(): | 
					
						
							|  |  |  | 	if len(sys.argv) > 1: | 
					
						
							|  |  |  | 		for arg in sys.argv[1:]: | 
					
						
							| 
									
										
										
										
											1991-12-18 13:45:17 +00:00
										 |  |  | 			n = eval(arg) | 
					
						
							| 
									
										
										
										
											1991-06-04 20:36:54 +00:00
										 |  |  | 			print n, fact(n) | 
					
						
							|  |  |  | 	else: | 
					
						
							|  |  |  | 		try: | 
					
						
							|  |  |  | 			while 1: | 
					
						
							| 
									
										
										
										
											1991-12-18 13:45:17 +00:00
										 |  |  | 				n = input() | 
					
						
							| 
									
										
										
										
											1991-06-04 20:36:54 +00:00
										 |  |  | 				print n, fact(n) | 
					
						
							|  |  |  | 		except EOFError: | 
					
						
							|  |  |  | 			pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | main() |