读书人

水仙花有关问题

发布时间: 2012-05-05 17:21:10 作者: rapoo

水仙花问题
对一个3位的整数num,如果其各位上数字的立方和m刚好和num相等,则称num为水仙花数。例如13+53+33=153,所以153是水仙花数。编程(a,b)开区间(不包括a和b)的的所有水仙花数。

[解决办法]
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
for(k=0;k<=9;k++)
{
sum1 = i*i*i+j*j*j+k*k*k;
sum2 = i*100+j*10+k;
if( == i*100+j*10+k)
printf("%d",sum2);
}

[解决办法]
http://topic.csdn.net/u/20081104/09/CE80A74F-AB45-4A16-9BDF-8F5DA6D91378.html
[解决办法]
void abc(int a,int b)
{
static int arr[4]={153,370,371,407};
int beg=-1,end=-1;
for(int i=0;i<4;i++)
{
if(beg==-1)
{
if(arr[i]>=a)
beg=i;
else break;
}
if(arr[i]<b)
{
end=i;
}
}
for(int j=beg;j<=end;j++)
printf("%d\n",arr[j]);
}
int main()
{
abc(100,999);
}
[解决办法]

C/C++ code
int sqrt(int m, int n)      //该函数用于计算m的n次方,并返回{    int sum = 1;    while(n > 0)    {        sum *= m;        n--;    }    return sum;}int fun(int m)              {    int sum = sqrt(m % 10, 3);   // m%10(m对10求余)计算m的个位数的3次幂赋值给sum    if(m > 1){                sum += fun(m / 10);  // m/10 是把m的个位数去掉,然后传给fun(int)函数,    }    return sum;               }int main(){    int m;    scanf("%d", &m);    if ( m == fun(m) )        printf("该数是水仙花数");    return 0;}
[解决办法]
http://topic.csdn.net/u/20120305/22/e4becd72-42cd-450c-919d-43f25afd8376.html

我之前的代码就是这样:
C/C++ code
#include<stdio.h> main(){  int i, a, b, c;  for(i=100;i<1000;i++)  {    a = (i/100);    b = (i%100)/100;    c = (i%10)/10;    if(a*a*a + b*b*b + c*c*c == i)      printf("%d\n",i);  }}
[解决办法]
#include <stdio.h>
#include <stdlib.h>//测试一个数是不是水仙花数
int daffodils(int n)
{
int i,p,s;
s=0;
p=n;
while(p!=0)
{
i=p%10;
s=s+i*i*i;
p=p/10;
}
if (s==n)
printf("%d is the dafodils number!",n);
else
printf("%d is NOT a dafodils number!",n);
return1;
return 0;
}
int main(void)
{
int n;
printf("please input the number:");
scanf("%d",&n);
daffodils(n);
system ("pause");
return 0;
}

读书人网 >C语言

热点推荐