簡體   English   中英

階乘數系統算法的形式證明

[英]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個零的resultthe_value_of_n_passed_as_an_argument_to_the_function - n的階乘表示。 這兩者都應該相對簡單。 最后,你有k == 0 ,這意味着resultn的原始值的階乘表示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM