阿姆斯特朗数的 C 程序
cserver side programmingprogramming
我们被赋予一项任务,我们必须检查用户输入的数字 n,无论它是否是阿姆斯特朗数。
阿姆斯特朗数是所有数字之和的位数幂,或者我们可以说数字顺序 n,与数字相同。
因此,下面是如何找到阿姆斯特朗数 − 的简单表示
公式 −
wxyz…. = pow(w, n) +pow(x, n) + pow(y, n) + pow(z, n) + …..
算法
START 步骤 1-> 声明一个函数来查找数字幂运算后的值 int power(int a, int b) 循环 while b>0 分配 power =power * a 将 b 减 1 结束循环 返回 power 结束 步骤 2-> 声明一个函数来计算数字的顺序 int count(int n) 声明并将 i 设置为 0 循环 while n!=0 将 i 加 1 将 n/10 除并存回 n 结束循环 返回 i 结束 步骤 3-> 声明一个函数来检查数字是否为素数 int armstrong(int n) 声明 x 并调用函数 count(n) 并将结果赋给 x 声明 rem = 0 且 m=0 设置为零 循环 While n 设置 rem = n %10 设置 m = m + power(rem, x) 将 n 设置为 n/10 结束循环 返回 m; 结束 步骤 4-> 声明 main int main(int argc, char const *argv[]) 声明并设置 n = 1634 调用函数 Armstrong 并检查值是否相等 打印"它是 armstrong 数字 End if Else 打印数字不是阿姆斯特朗数 结束 停止
示例
#include <stdio.h> int power(int a, int b){ int power =1; while(b>0){ power *= a; b--; } return power; } int count(int n){ int i=0; while(n!=0){ i++; n = n/10; } return i; } int armstrong(int n){ int x = count(n); int rem = 0, m=0; while(n){ rem = n %10; m += power(rem, x); n /= 10; } return m; } int main(int argc, char const *argv[]){ int n = 1634; if(n == armstrong(n)){ printf("%d 是阿姆斯特朗数
",n); } else printf("%d 不是阿姆斯特朗数
",n); return 0; }
输出
1634 是阿姆斯特朗数