C 语言打印 1 到 100 之间的所有迪沙里姆数

2025年1月7日 | 阅读 2 分钟

在这个程序中,我们需要按照以下算法打印1到100之间所有的Disarium数

算法

main()

  • 步骤 1: 开始
  • 步骤2: 设置结果 =0
  • 步骤3: 打印语句 "1到100之间的Disarium数是"
  • 步骤4: 重复步骤5和6直到 (i<=100)
  • 步骤5: 结果 = sumOfDigits(i)
  • 步骤6: 如果(结果==i)则打印 i
  • 步骤7: 返回 0
  • 步骤8: 结束

sumOfDigits(num)

  • 步骤 1: 开始
  • 步骤2: 设置 sum =0, rem =0
  • 步骤3: len = calculateLength(num)
  • 步骤4: 重复步骤5到8直到 (num>0)
  • 步骤5: rem = num%10
  • 步骤6: sum = sum + (rem)len
  • 步骤7: num =num/10
  • 步骤8: len--
  • 步骤9: 返回 sum
  • 步骤10: 结束

calculateLength(int n)

  • 步骤 1: 开始
  • 步骤2: 设置 length =0
  • 步骤3: 重复步骤4和5直到 (n!=0)
  • 步骤4: length = length + 1
  • 步骤5: n =n/10
  • 步骤6: 返回 length。
  • 步骤7: 结束

程序

输出

Disarium numbers between 1 and 100 are
1  2  3  4  5  6  7  8  9  89

快乐数

如果一个数重复地被其各位数字的平方和替换后最终得到1,则称该数为快乐数。如果这个过程导致包含4的数字的无限循环,那么该数将是一个不快乐数。

我们通过一个例子来理解

Number = 32
32+ 22 = 13
12 + 32 = 10
12 + 02 = 1

在这个例子中,我们将32拆分成其各位数字的平方和,得到另一个数字(13),我们用13替换32以继续这个循环,直到结果为1。我们发现32是一个快乐数。

如果任何数字的上述循环结果为1,则该数字将是快乐数,否则将是不快乐数,其结果为4、16、37、58、89、145、42、20等。

一些快乐数是7、28、100、320等。