C 语言实例 - 判断Armstrong数(阿姆斯壮数)

C 语言教程 · 2019-02-20 20:57:15

Armstrong 数,就是n位数的各位数的n次方之和等于该数,如:

153=1^3+5^3+3^3
1634=1^4+6^4+3^4+4^4

实例

#include <stdio.h> int main() { int number, originalNumber, remainder, result = 0; printf("输入三位数: "); scanf("%d", &number); originalNumber = number; while (originalNumber != 0) { remainder = originalNumber%10; result += remainder*remainder*remainder; originalNumber /= 10; } if(result == number) printf("%d 是 Armstrong 数",number); else printf("%d 不是 Armstrong 数",number); return 0; }

运行结果:

输入三位数: 371
371 是 Armstrong 

实例 - 两数之间的 Armstrong 数

#include <stdio.h> #include <math.h> int main() { int low, high, i, temp1, temp2, remainder, n = 0, result = 0; printf("输入两个整数: "); scanf("%d %d", &low, &high); printf("%d 和 %d 之间的 Armstrong 数为: ", low, high); for(i = low + 1; i < high; ++i) { temp2 = i; temp1 = i; // 计算 while (temp1 != 0) { temp1 /= 10; ++n; } while (temp2 != 0) { remainder = temp2 % 10; result += pow(remainder, n); temp2 /= 10; } if (result == i) { printf("%d ", i); } n = 0; result = 0; } return 0; }

运行结果:

输入两个整数: 100 1000
100 和 1000 之间的 Armstrong 数为: 153 370 371 407

实例 - 使用函数判断Armstrong 数

#include <stdio.h> #include <math.h> int checkPrimeNumber(int n); int checkArmstrongNumber(int n); int main() { int n, flag; printf("输入正整数: "); scanf("%d", &n); // 检测素数 flag = checkPrimeNumber(n); if (flag == 1) printf("%d 是素数。\n", n); else printf("%d 不是素数\n", n); // 检测 Armstrong 数 flag = checkArmstrongNumber(n); if (flag == 1) printf("%d 是 Armstrong 数。", n); else printf("%d 不是 Armstrong 数。",n); return 0; } int checkPrimeNumber(int n) { int i, flag = 1; for(i=2; i<=n/2; ++i) { // 非素数条件 if(n%i == 0) { flag = 0; break; } } return flag; } int checkArmstrongNumber(int number) { int originalNumber, remainder, result = 0, n = 0, flag; originalNumber = number; while (originalNumber != 0) { originalNumber /= 10; ++n; } originalNumber = number; while (originalNumber != 0) { remainder = originalNumber%10; result += pow(remainder, n); originalNumber /= 10; } // 判断条件 if(result == number) flag = 1; else flag = 0; return flag; }

输出结果为:

输入正整数: 371
371 不是素数
371 是 Armstrong 数。

点击查看所有 C 语言教程 文章: https://codercto.com/courses/l/17.html

查看所有标签

活着就为改变世界

活着就为改变世界

[美] 杰弗里·扬、威廉·西蒙 / 蒋永军 / 中信出版社 / 2010-6 / 39.00元

内容简介 苹果公司CEO史蒂夫•乔布斯这个一直活在自己想象的世界里的创业奇才,经历过各种挫折与失落,但他那无所畏惧、敢于承担的个性让他一直努力实践着自己的价值观,总能为他的离奇想法找到解决问题的办法。 本书两位作者通过深入访谈和资料调查,揭秘了许多乔布斯个人的创业经历和家庭变故,为大家塑造了一个活生生的“乔布斯式”的鲜活人物,描述了一个个充满传奇色彩的商业奇迹,真实地再现了乔布斯几十年......一起来看看 《活着就为改变世界》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

在线进制转换器
在线进制转换器

各进制数互转换器