请输入您要查询的百科知识:

 

词条 阿姆斯特朗数
释义

阿姆斯特朗数

如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。

例如1^3 + 5^3 + 3^3 = 153

当n=3时,又称水仙花数,特指一种三位数,其各个数之立方和等于该数。

水仙花数共有4个,分别为:153、370、371、407。

100000000以内的阿姆斯特朗数

100000000以内的阿姆斯特朗数

153

370

371

407

1634

8208

9474

54748

92727

93084

548834

1741725

4210818

9800817

9926315

24678050

24678051

88593477

C语言实例

如果一个正整数等于其各个数字的n次方和,则称该数为阿姆斯特朗数(亦称为自恋性数)。

如 407=64+0+343就是一个阿姆斯特朗数。试编程求1000以内的所有阿姆斯特朗数。

*问题分析与算法设计

可采用穷举法,依次取1000以内的各数(设为i),将i的各位数字分解后,据阿姆斯特朗数的性质进行计算和判断。

*程序说明与注释

#include<stdio.h>

int main()

{

int i,t,k,a[3];

printf("There are follwing armstrong number smaller than 1000:\");

for(i=2;i<1000;i++) /*穷举要判定的数i的取值范围2~1000*/

{

for(t=0,k=1000;k>=10;t++) /*截取整数i的各位(从高向低位)*/

{

a[t]=(i%k)/(k/10); /*分别赋于a[0]~a[2}*/

k/=10;

if(a[0]*a[0]*a[0]+a[1]*a[1]*a[1]+a[2]*a[2]*a[2]==i)

/*判断i是否为阿姆斯特朗数*/

printf("%5d",i); /*若满足条件,则输出*/

}

printf("\");

}

*运行结果

There are following armstrong number smaller than 1000:

153 370 371 407

C++实例

本程序为1000000000以内的阿姆斯特朗数

#include<iostream>

using namespace std;

int main()

{

freopen("sss.txt","w",stdout);

long long i,j,x[12],temp,h;

int b,c,a[10] [9]= {

0,0,0,0,0,0,0,0,0,

1,1,1,1,1,1,1,1,1,

2,4,8,16,32,64,128,256,512,

3,9,27,81,243,729,2187,6561,9683,

4,16,64,256,1024,4096,16384,65536,262144,

5,25,125,625,3125,15625,78125,390625,1953125,

6,36,216,1296,7776,46656,279936,1679616,10077696,

7,49,343,2401,16807,117649,823543,5764801,40353607,

8,64,512,4096,32768,262144,2097152,16777216,134217728,

9,81,729,6561,59049,531441,4782969,43046721,387420489};

for(i=100;i<=999999999;i++)

{

int k=0;

memset(x,0,sizeof(x));

x[1]=i;

for(j=1;j<12;j++)

{

if(x[j]>=10)

{

temp=x[j]/10;

x[j]-=temp*10;

x[j+1]=temp ;

k++;

}

else break;

}

if(a[x[1]][k]+a[x[2]][k]+a[x[3]][k]+a[x[4]][k]+a[x[5]][k]+a[x[6]][k]+a[x[7]][k]+a[x[8]][k]+a[x[9]][k]+a[x[10]][k]==i)

cout<<i<<" ";

}

}

结果为:

153 370 371 407 1634 8208 9474 54748 92727 93084 548834 1741725 4210818 9800817 9926315 24678050 24678051 88593477 146511208

此程序的运行时间为210.109秒。

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/2/25 6:19:50