一个钻石数是这样的一个数,其各位数上的立方和相加和该数相等,例如:153=1^3+5^3+3^3。
那么怎样判断一个数是不是钻石数呢?下面是我给出的一个实现:
//file:isDiamondNumber.c
//author:filcon
//version 0.1 released on 2006/06/15
//Licensed under GPL terms
#include
int isDiamondNumber(long num)
{//判断一个整数是否是钻石数
int m=1;//10的次方
int index=0; //某位上的数值,比如说153的百位为1
long sum=0; //以153为例:sum=1^3+5^3+3^3
long tmpInt=num; //临时整数
int i=1;
while( num > pow( 10, m ) ) m++;//判断num是10的几次方
for(i = 1; i <= m; i++)
{//求sum
index = tmpInt / ( long )pow( 10, m-i );
sum = sum + ( long )pow( index, 3 ) ;
tmpInt = tmpInt - index * ( long )pow( 10, m-i );
}
if ( sum == num)
return 1;
else
return 0;
}
阅读(1494) | 评论(0) | 转发(0) |