[英]Formal proof for a factorial number system algorithm
我提出了一種算法,用於在階乘數字系統中查找給定數字的表示。 我很難以正式的方式證明它的正確性。 這是 Python 中的代碼(注意 k: = s):
def fns(n):
s = 1
k = 1
while s * (k + 1) <= n:
k = k + 1
s = s * k
while k >= 1:
print(n // s, end = "")
n = n % s
s = s // k
k = k - 1
實際上,要“證明”一個包含“打印”語句的程序有點困難。 您最好將值附加到列表中,然后打印或返回列表,以便。 你有一些可以反對的理由。 所以讓我們假設你在某個地方有result = []
,而你的“out +=”語句是result.append(n//s)
所以。 你有兩個循環,你需要兩個循環不變量。 首先,您需要證明s = k!
. 對於第二個循環,您需要顯示附加k
個零的result
是the_value_of_n_passed_as_an_argument_to_the_function - n
的階乘表示。 這兩者都應該相對簡單。 最后,你有k == 0
,這意味着result
是n
的原始值的階乘表示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.