| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 13292 人关注过本帖
标题:怎样求出所有水仙花数?
只看楼主 加入收藏
h646028147
Rank: 2
等 级:论坛游民
帖 子:33
专家分:23
注 册:2010-4-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:13 
怎样求出所有水仙花数?
程序代码:
#include<stdio.h>
    int n,n1;
void main()
{

    int fun(int);
    int a,b,c;
    printf("输入要输出数的位数:\n");
    scanf("%d",&n1);

   
    for(a=1;a<10;a++)               //这里要怎样改才可以求出相应位数的呀?\"\"如果用数组的话好想不好弄
        for(b=0;b<10;b++)
            for(c=0;c<10;c++)
            {
                if(a*100+b*10+c==fun(a)+fun(b)+fun(c))
                    printf("%d%d%d\n",a,b,c);
            }




}
int fun(int x)                    //求x的n次方
{
    int y=1;
    for(;n>0;n--)
        y=y*x;
    n=n1;
    return(y);
}
搜索更多相关主题的帖子: 水仙花 
2010-04-14 08:03
h646028147
Rank: 2
等 级:论坛游民
帖 子:33
专家分:23
注 册:2010-4-12
收藏
得分:0 
如果我这段程序的格式有什么不足之处还望各位指出,谢了!
2010-04-14 08:06
fuyang163
Rank: 2
等 级:论坛游民
帖 子:36
专家分:59
注 册:2009-4-13
收藏
得分:5 
#include "stdio.h"
main()
{
int i,j,k,n;
printf("'water flower'number is:");
 for(n=100;n<1000;n++)
 {
  i=n/100;/*分解出百位*/
  j=n/10%10;/*分解出十位*/
  k=n%10;/*分解出个位*/
  if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
   {
   printf("%-5d",n);
   }
 }
printf("\n");
}
这个只是一个简单的求1000以内的所有水仙花数,当然你也可以改写成你所贴那种函数形式,你就参考一下吧,希望有用。
2010-04-14 08:37
h646028147
Rank: 2
等 级:论坛游民
帖 子:33
专家分:23
注 册:2010-4-12
收藏
得分:0 
我的那个就可以求出1000以内的数了,可是我是想求出所有数。不过还是感谢了,那个分解的方法给我一些启发,我再看看
2010-04-14 08:58
h646028147
Rank: 2
等 级:论坛游民
帖 子:33
专家分:23
注 册:2010-4-12
收藏
得分:0 
程序代码:
#include<stdio.h>
    int n,n1;
void main()
{

    int fun(int);
    int a,b,c;
    int i;
    printf("输入要输出数的位数:\n");
    scanf("%d",&n1);
    for(i=100;i<fun(10);i++)
    {
        if(i/1000*1000+i%1000/100*100+i%1000%100/10*10+i%1000%100%10==fun(i%1000%100%10)+fun(i%1000%100/10)+fun(i%1000/100)+fun(n/1000))
        {
            printf("%d",i);
        }
    }


}
int fun(int x)
{
    int y=1;
    for(;n>0;n--)
        y=y*x;
    n=n1;
    return(y);
}
我想我尽力了,但还是错了
2010-04-14 09:23
qingzhu5753
Rank: 4
等 级:业余侠客
帖 子:64
专家分:248
注 册:2009-10-28
收藏
得分:5 
水仙花数,就是指一个三位数,其各个数的立方和等于该数。如果你非要输入位数,试试这个吧:
#include<stdio.h>
#include <math.h>


void main()
{
    int n=0,n1=0;
    int sum=0,a=0;
    printf("输入要输出数的位数:\n");
    scanf("%d",&n1);

    for(a=100;a<pow(10,n1);a++)
    {
        n=a;
        while(n%10>0)        
        {
            sum+=pow((n%10),3);
            n=(n-n%10)/10;
        }              
               
        if(a==sum)
            printf("%d\n",a);
        sum=0;

    }
}
2010-04-14 09:30
lwlls668
Rank: 2
等 级:论坛游民
帖 子:59
专家分:72
注 册:2010-4-9
收藏
得分:5 
#include<stdio.h>
#include <math.h>
int fun(int n)
{int i,s=1;
for(i=1;i<=n;i++)
s=s*10;
}

void main()
{
    int n,n1=0;
  
   long sum,s,a=0,x[8],y=0;
    printf("输入要输出数的位数(小于8位):\n");
    scanf("%d",&n1);
    if(n1>=9){printf("超出范围\n");
         printf("输入要输出数的位数:\n");
            scanf("%d",&n1);}
      
    for(sum=fun(n1-1);sum<fun(n1);sum++)
    {   s=sum;
       for(n=0;n<=n1;n++)
        {x[n]=s%10;
         s=(s-x[n])/10;
         y=y+x[n]*x[n]*x[n];
        }

     if(y==sum)printf("%ld",sum);

    }
   
 }
暂时保存在这儿,我没电脑····以后修改,或请教大虾帮忙吧····
2010-04-14 11:20
h646028147
Rank: 2
等 级:论坛游民
帖 子:33
专家分:23
注 册:2010-4-12
收藏
得分:0 
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)
所以不止四个数是水仙花数
2010-04-14 12:07
woaiqiufeng
Rank: 2
等 级:禁止访问
帖 子:38
专家分:29
注 册:2010-3-13
收藏
得分:5 
兄弟你理解错误了,水仙数就是一个三位数的,不是4位,5位。。。。。。。。。。。。。
2010-04-14 17:03
h646028147
Rank: 2
等 级:论坛游民
帖 子:33
专家分:23
注 册:2010-4-12
收藏
得分:0 
我是从百度词条中搜索的~~~~~~~~
2010-04-14 17:39
快速回复:怎样求出所有水仙花数?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027939 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved