Python 程序:打印 1 到 100 之间的 Disarium 数


2022 年 3 月 21 日, Learn eTutorial
2031

什么是 Disarium 数?

Disarium 数是指一个数,其各位数字按各自位置的幂次方之和等于该数本身。在这个基本的 Python 程序示例中,我们需要了解 Disarium 数以及如何在一定范围内打印 Disarium 数。

disarium number Checking

如何在 Python 中打印给定范围内的 Disarium 数?

假设我们取数字 **89**;我们需要检查它是否是 Disarium 数。所以我们需要将 **8 的 1 次幂和 9 的 2 次幂相加**,即 **8 + 81 = 89**。因此,数字 **89 是一个 Disarium 数**。在这个简单的 Python 程序中,我们需要打印 1 到 100 之间的所有 Disarium 数。所以我们必须检查该范围内每个数字是否为 Disarium 数。

我们使用两个用户定义的函数来解决这个程序,一个是用于查找数字的长度,另一个是用于检查该数字是否是 Disarium 数。然后在主程序中,我们调用 Disarium 数检查函数,长度函数是从 **sumDigit** 函数中调用的。

**Disarium 检查函数:**在这个用户函数中,我们调用另一个函数来获取数字的长度。我们初始化两个变量用于余数和总和,打开一个 while 循环,直到数字等于零,使用 **mod** 运算符取余数。我们使用算术运算,例如将总和 = 总和 + 余数(长度次方)相加。之后,我们将数字除以 10 以去除最后一位数字,并将长度减一。

**长度函数:**在这里,我们将一个变量 length 初始化为零,并打开一个 `while 循环`,直到数字不等于零。我们在每次迭代中将 length 变量加 1,并通过将数字除以 10 从数字中移除一个数字。然后 `while 循环` 结束后,使用 Python 语言中的参数传递方法返回长度。

disarium number Checking

算法

**步骤 1:** 初始化一个变量用于结果,设为零。

**步骤 2:** 显示消息“1 到 100 之间的 Disarium 数是”

**步骤 3:** 使用 `for 循环` 和 Python 中的 range 方法检查 1 到 100 之间的每个数字。

**步骤 4:** 调用函数检查数字是否为 Disarium 数,并将函数返回的值赋给结果变量。

**步骤 5:** 在该调用函数内部,它会调用另一个函数来计算数字的长度。

**步骤 6:** 使用“`if` 条件”检查结果是否与数字相同。如果是,则打印该数字。

用户定义函数 sumDigit()

**步骤 1:** 将余数和总和初始化为零。

**步骤 2:** 调用函数计算长度。

**步骤 3:** 打开一个 `while 循环`,直到数字不等于零。

**步骤 4:** 使用 **mod** 运算符将数字的数字拆分。

**步骤 5:** 计算总和为 sum + (rem**len)。

**步骤 6:** 将数字除以 10 以从数字中去除一个数字。

**步骤 7:** 将长度减一并返回总和。

用户定义函数 Length(n)

**步骤 1:** 首先,我们将一个变量 length 初始化为零。

**步骤 2:** 打开一个 `while 循环`,直到数字不等于零。

**步骤 3:** 在每次迭代中将长度加一。

**步骤 4:** 将数字除以 10 以去除已计数的数字。

**步骤 5:** 返回长度。


要打印 Disarium 数,我们需要了解以下 Python 主题,请参阅这些主题以获得更好的理解。

Python 源代码

                                          def Length(n):    
    length = 0;    
    while(n != 0):                    # calculating the length of the number
        length = length + 1;    
        n = n//10;    
    return length;    
     
#sumDigit()  
def sumdigit(num):    
    rem = sum = 0;    
    len = Length(num);     # checking the number is disarium or not
        
    while(num > 0):    
        rem = num;   
        sum = sum + (rem**len);    
        num = num//10;    
        len = len - 1;    
    return sum;    
      
result = 0;    
     

print("Disarium numbers between 1 and 100 are");    
for i in range(1, 101):           # printing disarium numbers
    result = sumdigit(i);    
        
    if(result == i):    
        print(i),   
                                      

输出

Disarium numbers between 1 and 100 are

1  2  3  4  5  6  7  8  9  89