1. 程式人生 > >(百例程式設計)24.阿姆斯特朗數

(百例程式設計)24.阿姆斯特朗數

題目:一個正整數等於其各個數字的立方和,則稱該數為阿姆斯特朗數(亦稱為自戀性數)。如 407=43+03+73就是一個阿姆斯特朗數。求1000以內的所有阿姆斯特朗數。用窮舉法,依次取1000以內的各數i,將i的各位數字分解後,據阿姆斯特朗數的性質進行計算和判斷。

阿姆斯特朗數的定義: 如果一個n位正整數等於其各位數字的n次方之和,則稱該數為阿姆斯特朗數。例如1^3 + 5^3 + 3^3 = 153 。當n=3時,又稱水仙花數,特指一種三位數,其各個數之立方和等於該數。水仙花數共有4個,分別為:153、370、371、407。

#include<iostream>
using namespace std;
void trans(int a,int *q);
int main(void)
{
	int a[3];
 for (int i=2;i!=1000;++i)
 {
	trans(i,a);
	if (i==a[0]*a[0]*a[0]+a[1]*a[1]*a[1]+a[2]*a[2]*a[2])
	{
		cout<<i<<endl;
	}
 }
	return 0; 
}

void trans(int a,int *q)
{
   for (int k=100;k!=0;++q)
   {
	   *q=a/k%10;
	   k/=10;
   }
}