-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPE004.py
More file actions
54 lines (44 loc) · 1.19 KB
/
PE004.py
File metadata and controls
54 lines (44 loc) · 1.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/usr/bin/env python
# -*coding:UTF-8-*-
"""
@Project hello_world
@File PE004.py
@Author Haosen Luo
@Date 2024/12/9 7:34
"""
import numpy as np
import time
"""
最大回文乘积
回文数是指从前往后读和从后往前读都一样的数。由两个位数相乘得到的回文数中,最大的是
9009=91×99.
求最大的由两个3位数相乘得到的回文数。
"""
def timer(func):
def inner_func(*args, **kwargs):
begin_time = time.time()
func(*args, **kwargs)
print(f"Running {time.time() - begin_time} s")
return inner_func
@timer
def main(n=2):
min_number = 10 ** (n-1)
max_number = 10 ** n
array = np.arange(min_number + 1, max_number)
two_dim_results = np.outer(array, array)
numbers = np.ravel(two_dim_results)
numbers.sort()
print(numbers)
max_palindrome = None
# 从后往前数,返回回文数直接退出程序
for i in range(len(numbers) - 1, -1, -1):
s = str(numbers[i])
if s == s[::-1]: # 检查是否为回文数
max_palindrome = numbers[i]
print(max_palindrome)
break
print(max_palindrome)
if __name__ == '__main__':
main(2)
main(3)
main(4)