| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1161 人关注过本帖
标题:求助:求小于max的所有水仙花数的解释
只看楼主 加入收藏
tangzhongliu
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2005-2-10
收藏
 问题点数:0 回复次数:3 
求助:求小于max的所有水仙花数的解释

/* 求小于max的所有水仙花数*/

#include "Stdio.h" #include<math.h> #include<time.h> int arm_number(int max); int main() { int max,second; time_t t; printf("input the max number:"); scanf("%d",&max); second=time(&t); arm_number(max); second=time(&t)-second; printf("The total times is:%d\n",second); return 0;

} int arm_number(int max) { int num,radix=10,x,y,time=0; for(num=100;num<=max;num++) { int n=0,power=1,total=0; while(power<=num) { power=power*radix; n++; time++; } while(power>=10) { x=(num%power)/(power/10); y=n; total+=(int)pow(x,y); power=power/10; time++; } if(total==num) printf("The arm number is:%d\n",num); } printf("The times of computed is:%d\n"); return 0; } 只因水平有限,这个程序看了半天也没有明白每步都什么意思,只好麻烦各位高手了,谁能帮我解释一下各个步骤的意思啊,谢谢了!!

搜索更多相关主题的帖子: 水仙花 max 解释 
2005-02-26 23:47
freeforever
Rank: 4
等 级:业余侠客
威 望:3
帖 子:368
专家分:201
注 册:2005-11-2
收藏
得分:0 
#include "Stdio.h"
#include<math.h>
#include<time.h>
#include <stdlib.h>
int arm_number(int max);
int main()
{
    int max,second;
    time_t t;//计时变量
    printf("input the max number:"); //提示输入
    scanf("%d",&max); //输入max,下面计算<max的水仙花数
    second=time(&t); //计时开始
    arm_number(max); //调用函数
    second=time(&t)-second; //计算时间
    printf("The total times is:%d\n",second); //显示耗时
    system("pause");//屏幕暂停
    return 0;//函数返回
}
int arm_number(int max)
{
    int num,radix=10,x,y;//,time=0; 不知道這個Time是什麼意思,我給註釋掉了
    for(num=100;num<=max;num++) //100以下不存在水仙花数
    {
        int n=0,power=1,total=0;
        while(power<=num)
        { //計算Num的長度
            power=power*radix;
            n++; //長度
            //time++;
        } //每循环完Power是Num的最小整數
        while(power>=10)
        {
            x=(num%power)/(power/10); //取其中一位
            //y=n;
            total+=(int)pow(x,n); //累加當前位的N次方
            power=power/10;
            //time++;
        }
        if(total==num) //满足条件则输出
        printf("The arm number is:%d\n",num);
    }
    //printf("The times of computed is:%d\n",time);
    return 0;
}
/*
看過很多關於"水仙花數"的帖子,第一次看到沒有把它限制成三位數
我個人也不同意它是三位數的看法,試算下大於912985153的下一個數是多少吧
*/

其实我也很无聊!
2007-11-25 18:07
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
这么代码写成这样,当然看不明白了

从BFS(Breadth First Study)到DFS(Depth First Study)
2007-11-25 18:39
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
/* 我写的一个简单的穷举法 */

#include <stdio.h>
#define MAX 999      /* 我从没看到过超过3位的水仙花数,设更大也可以 */

int main(void)
{
    int ar[10];
    int i = 100, j, k, m;

    while(i < MAX)
    {
        j = i;
        m = 0;
        while(j)
        {
            k = j % 10;
            m += (k * k * k);
            j /= 10;
        }
        if(m == i)
            printf("%d\n", i);
        i++;
    }
   
    printf("100 - %d.\n\nDone.", i);
    getchar();
    return 0;
}

[[italic] 本帖最后由 cosdos 于 2007-11-25 19:25 编辑 [/italic]]

—>〉Sun〈<—
2007-11-25 19:19
快速回复:求助:求小于max的所有水仙花数的解释
数据加载中...
 
   



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

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