C 語(yǔ)言實(shí)例 – 判斷Armstrong數(shù)(阿姆斯壯數(shù))
C 語(yǔ)言實(shí)例 - 判斷Armstrong數(shù)(阿姆斯壯數(shù))
Armstrong 數(shù),就是n位數(shù)的各位數(shù)的n次方之和等于該數(shù),如:
153=1^3+5^3+3^3 1634=1^4+6^4+3^4+4^4
實(shí)例
#include <stdio.h>
int main()
{
int number, originalNumber, remainder, result = 0;
printf("輸入三位數(shù): ");
scanf("%d", &number);
originalNumber = number;
while (originalNumber != 0)
{
remainder = originalNumber%10;
result += remainder*remainder*remainder;
originalNumber /= 10;
}
if(result == number)
printf("%d 是 Armstrong 數(shù)",number);
else
printf("%d 不是 Armstrong 數(shù)",number);
return 0;
}
運(yùn)行結(jié)果:
輸入三位數(shù): 371 371 是 Armstrong
實(shí)例 - 兩數(shù)之間的 Armstrong 數(shù)
#include <stdio.h>
#include <math.h>
int main()
{
int low, high, i, temp1, temp2, remainder, n = 0, result = 0;
printf("輸入兩個(gè)整數(shù): ");
scanf("%d %d", &low, &high);
printf("%d 和 %d 之間的 Armstrong 數(shù)為: ", low, high);
for(i = low + 1; i < high; ++i)
{
temp2 = i;
temp1 = i;
// 計(jì)算
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;
}
運(yùn)行結(jié)果:
輸入兩個(gè)整數(shù): 100 1000 100 和 1000 之間的 Armstrong 數(shù)為: 153 370 371 407
實(shí)例 - 使用函數(shù)判斷Armstrong 數(shù)
#include <stdio.h>
#include <math.h>
int checkPrimeNumber(int n);
int checkArmstrongNumber(int n);
int main()
{
int n, flag;
printf("輸入正整數(shù): ");
scanf("%d", &n);
// 檢測(cè)素?cái)?shù)
flag = checkPrimeNumber(n);
if (flag == 1)
printf("%d 是素?cái)?shù)。\n", n);
else
printf("%d 不是素?cái)?shù)\n", n);
// 檢測(cè) Armstrong 數(shù)
flag = checkArmstrongNumber(n);
if (flag == 1)
printf("%d 是 Armstrong 數(shù)。", n);
else
printf("%d 不是 Armstrong 數(shù)。",n);
return 0;
}
int checkPrimeNumber(int n)
{
int i, flag = 1;
for(i=2; i<=n/2; ++i)
{
// 非素?cái)?shù)條件
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;
}
輸出結(jié)果為:
輸入正整數(shù): 371 371 不是素?cái)?shù) 371 是 Armstrong 數(shù)。
相關(guān)文章
- C語(yǔ)言中pthread_exit()函數(shù)實(shí)現(xiàn)終止線(xiàn)程的方法
- C++中的字符串編碼怎么處理
- C++之編寫(xiě)高效Makefile文件最佳方法
- 一文詳解C++智能指針的原理、分類(lèi)及使用
- C++?折疊參數(shù)包詳解(悄然增強(qiáng)編程效率)
- C++編譯器和鏈接器工作原理及使用方法完全指南
- C++?OpenMP簡(jiǎn)單介紹
- 一文弄懂C語(yǔ)言EOF
- C++中的字符串編碼處理方法
- C語(yǔ)言中pthread_exit()函數(shù)實(shí)現(xiàn)終止線(xiàn)程
- C語(yǔ)言全局變量和局部變量的示例代碼
- C語(yǔ)言中字符串常用操作總結(jié)
- .NET RulesEngine(規(guī)則引擎)的使用詳解
- 詳解.Net緩存之MemoryCahe
- asp.net core MVC之實(shí)現(xiàn)基于token的認(rèn)證
- .NET之生成數(shù)據(jù)庫(kù)全流程實(shí)現(xiàn)
- .Net的GC垃圾回收原理及實(shí)現(xiàn)
- 關(guān)于.net環(huán)境下跨進(jìn)程、高頻率讀寫(xiě)數(shù)據(jù)的問(wèn)題
- .net core 使用阿里云分布式日志的配置方法
- asp.net core為IHttpClientFactory添加動(dòng)態(tài)命名配置