| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2365 人关注过本帖
标题:[没人气,抄道题] 快乐数
只看楼主 加入收藏
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
结帖率:91.67%
收藏
已结贴  问题点数:100 回复次数:6 
[没人气,抄道题] 快乐数
A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers.

对于一个正整数n,计算这个n的每位的平方和,重复这个过程,要么最终变为1,要么陷入一个无限的循环中。变为1的称为快乐数。
例如 19 就是一个快乐数,因为
1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1 最终变为了1
例如 4 就不是一个快乐数,因为
4^2 = 16
1^2 + 6^2 = 37
3^2 + 7^2 = 58
5^2 + 8^2 = 89
8^2 + 9^2 = 145
1^2 + 4^2 + 5^2 = 42
4^2 + 2^2 = 20
2^2 + 0^2 = 4 又变成当初的4了,永远不会变成1

现在的问题是,给定一个正整数,判定它是否为快乐数
搜索更多相关主题的帖子: following positive replace include numbers 
2015-08-05 12:43
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
占个位先

DO IT YOURSELF !
2015-08-05 13:58
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
1 是一个快乐数
7 是一个快乐数
10 是一个快乐数
13 是一个快乐数
19 是一个快乐数
23 是一个快乐数
28 是一个快乐数
31 是一个快乐数
32 是一个快乐数
44 是一个快乐数
49 是一个快乐数
68 是一个快乐数
70 是一个快乐数
79 是一个快乐数
82 是一个快乐数
86 是一个快乐数
91 是一个快乐数
94 是一个快乐数
97 是一个快乐数
100 是一个快乐数
103 是一个快乐数
109 是一个快乐数
129 是一个快乐数
130 是一个快乐数
133 是一个快乐数
139 是一个快乐数
167 是一个快乐数
176 是一个快乐数
188 是一个快乐数
190 是一个快乐数
192 是一个快乐数
193 是一个快乐数
203 是一个快乐数
208 是一个快乐数
219 是一个快乐数
226 是一个快乐数
230 是一个快乐数
236 是一个快乐数
239 是一个快乐数
262 是一个快乐数
263 是一个快乐数
280 是一个快乐数
291 是一个快乐数
293 是一个快乐数
301 是一个快乐数
302 是一个快乐数
310 是一个快乐数
313 是一个快乐数
319 是一个快乐数
320 是一个快乐数
326 是一个快乐数
329 是一个快乐数
331 是一个快乐数
338 是一个快乐数
356 是一个快乐数
362 是一个快乐数
365 是一个快乐数
367 是一个快乐数
368 是一个快乐数
376 是一个快乐数
379 是一个快乐数
383 是一个快乐数
386 是一个快乐数
391 是一个快乐数
392 是一个快乐数
397 是一个快乐数
404 是一个快乐数
409 是一个快乐数
440 是一个快乐数
446 是一个快乐数
464 是一个快乐数
469 是一个快乐数
478 是一个快乐数
487 是一个快乐数
490 是一个快乐数
496 是一个快乐数
536 是一个快乐数
556 是一个快乐数
563 是一个快乐数
565 是一个快乐数
566 是一个快乐数
608 是一个快乐数
617 是一个快乐数
622 是一个快乐数
623 是一个快乐数
632 是一个快乐数
635 是一个快乐数
637 是一个快乐数
638 是一个快乐数
644 是一个快乐数
649 是一个快乐数
653 是一个快乐数
655 是一个快乐数
656 是一个快乐数
665 是一个快乐数
671 是一个快乐数
673 是一个快乐数
680 是一个快乐数
683 是一个快乐数
694 是一个快乐数
700 是一个快乐数
709 是一个快乐数
716 是一个快乐数
736 是一个快乐数
739 是一个快乐数
748 是一个快乐数
761 是一个快乐数
763 是一个快乐数
784 是一个快乐数
790 是一个快乐数
793 是一个快乐数
802 是一个快乐数
806 是一个快乐数
818 是一个快乐数
820 是一个快乐数
833 是一个快乐数
836 是一个快乐数
847 是一个快乐数
860 是一个快乐数
863 是一个快乐数
874 是一个快乐数
881 是一个快乐数
888 是一个快乐数
899 是一个快乐数
901 是一个快乐数
904 是一个快乐数
907 是一个快乐数
910 是一个快乐数
912 是一个快乐数
913 是一个快乐数
921 是一个快乐数
923 是一个快乐数
931 是一个快乐数
932 是一个快乐数
937 是一个快乐数
940 是一个快乐数
946 是一个快乐数
964 是一个快乐数
970 是一个快乐数
973 是一个快乐数
989 是一个快乐数
998 是一个快乐数

DO IT YOURSELF !
2015-08-05 14:32
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:50 
最终加来加去   就1 4 两个结果

DO IT YOURSELF !
2015-08-05 14:39
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:10 
最终必须只剩一个1才行

一片落叶掉进了回忆的流年。
2015-08-05 15:11
calix
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:249
专家分:1442
注 册:2015-5-4
收藏
得分:20 
程序代码:
#include<stdio.h>

int check(int n){
    int sum, d;
    for(;;){
        sum = 0;
        while(n > 0){
            d = n % 10;
            n = n / 10;
            sum += d * d;
        }
        if(sum == 1){
            return 1;
        }
        if(sum == 4 || sum == 16 || sum == 37 || sum == 58 || sum == 89 || sum == 145 || sum == 42 || sum == 20){//这几个数构成循环,随便判断一个就行,反正还会加回来
            return 0;
        }
        n = sum;
    }
}

main(){
    int i;
    for(i = 1; i <= 100; i++){
        if(check(i)){
            printf("%d is a happy number\n", i);
        }
    }
}
2015-08-05 15:43
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:20 
如果确定4循环则可用递归完成,代码如下:
程序代码:
#include <stdio.h>
int happy(int num)
{
    int s;
    for(s=0;num>0;num/=10)s+=(num%10)*(num%10);
    if(s==1)return 1;
    if(s==4)return 0;
    s=happy(s);
    return s;
}
void main()
{
    int n;
    while(1)
    {
        scanf("%d",&n);
        if(n<=0)break;
        printf("%d",n);
        if(happy(n))
            printf("是快乐数\n");
        else
            printf("不是快乐数\n");
    }
}


能编个毛线衣吗?
2015-08-05 15:48
快速回复:[没人气,抄道题] 快乐数
数据加载中...
 
   



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

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