我试图演示自然数和有理数之间的双射,从N到Q。当我运行代码时,它会运行一段时间,之后进程会以“killd 9”消息终止。
n代表自然数,o代表分子,m代表分母
这是我的密码:
import numpy as np
n,m,o = 1766445895,1,1
N,M,O=[],[],[]
O.append(o)
M.append(m)
N.append(n)
go_on = True
while go_on:
if n % 2 == 0:
n=(n-2)//2
N.append(n)
elif n % 2 == 1:
n=(n-1)//2
N.append(n)
elif n<=0:
go_on = False
for i in range(len(N)):
if N[i] % 2 == 0:
o=m+o
O.append(o)
M.append(m)
if N[i] % 2 == 1:
m=o+m
O.append(o)
M.append(m)
for i in range(len(N)):
if i < 10:
print('{:d}: n = {:10d}, q = {:6d}/{:6d}'.format(i, N[i],O[i],M[i]))
else:
print('{:d}: n = {:10d}, q = {:6d}/{:6d}'.format(i, N[i],O[i],M[i]))