Skip to content

Instantly share code, notes, and snippets.

@fumiyanll23
Last active January 28, 2023 21:21
Show Gist options
  • Save fumiyanll23/c15dbd614271514b3b02b7ff40648848 to your computer and use it in GitHub Desktop.
Save fumiyanll23/c15dbd614271514b3b02b7ff40648848 to your computer and use it in GitHub Desktop.
import time
N = 50
M = N * N
# 結果を書き込むファイルのパスを指定する
PATH = './palindromic_expression.txt'
time_start = time.time()
print('searching...')
# 任意の1桁の数は回文数なので,n ≧ 11として探索する
for n in range(11, N):
# n < m
for m in range(n+1, M):
n_rev = int(str(n)[::-1])
m_rev = int(str(m)[::-1])
if str(n*m) == str(n*m)[::-1] and n*m == n_rev*m_rev:
with open(PATH, 'a') as f:
f.write(f'{n} * {m} = {n*m} = {m_rev} * {n_rev}\n')
print('finished :)')
time_end = time.time()
print(f'Time: {time_end - time_start}')
@fumiyanll23
Copy link
Author

fumiyanll23 commented May 29, 2022

About

回文数ならぬ回文数式を見つけるスクリプトです.回文数式 (palindromic expression) とは著者の造語で,以下の条件を充たす数式のことをいいます:

  • 2つの相異なる正整数 $n, m\ (n &lt; m)$ とそれらの積 $\ell$ に対して,次のように書ける数式である:
    • $n \times m = \ell = \mbox{[nを (10進数表記で) ひっくり返した数]} \times \mbox{[mを (10進数表記で) ひっくり返した数]}$.

Example

.
.
.
21 * 132 = 2772 = 231 * 12
21 * 1212 = 25452 = 2121 * 12
21 * 1332 = 27972 = 2331 * 12
21 * 2304 = 48384 = 4032 * 12 <- 参考文献内で紹介された数式
22 * 101 = 2222 = 101 * 22
22 * 111 = 2442 = 111 * 22
22 * 121 = 2662 = 121 * 22
22 * 131 = 2882 = 131 * 22
.
.
.

References

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment