猫史档案馆


tc问你个问题!

用户:四九圣尊四九圣尊查看:2 回复:13 评论:2 创建时间:2017-07-25T22:01:21


在编程课上猫老祖给了我一个题目:

 Write an algorithm to determine if a number is "happy"

 

(我就不翻译了以您的英语水平肯定会)

我做出了一个验证程序代码如下:

n = int(input("来检测他是不是快乐数!"))

decompose = 0

new = 0

x = 0

buer = 0

while new != 1:

    while n != 0:

        decompose = n % 10

        n = (n - decompose)/10

        new = new + decompose ** 2

        print ("decompose=",decompose,"new=",new)

        if new == 1:

            buer = 1

            break

    if new == 145:

        buer = 0

        break

    if new == 1:

        buer = 1

        break

    n = new

    new = 0

if buer == 0:

    print("在这个范围内没有找出ta是快乐数的依据!")

else:

    print("ta是快乐数!")

exit = input("enter!")

快乐数的检测过程这里tc就自己看吧。逻辑说不了。

检测过程中我发现只要不是快乐数的数拆来拆去中都会出现一个数字:145(还有一些这样的数我只举例这一个)不是快乐数的数在拆分中会出现循环,它在循环中出现的位置始终不变!

可是为什么会出现它呢?是不是只是巧合(我试了很多数但不敢肯定)

tc有没有办法检测拆分出来的数是否会重复出现?就可以不用这个不严谨的办法了!就是检测其中的循环。请教tc谢谢!




回复

上一页1 页 / 共 1下一页
四九圣尊四九圣尊


这是优化版,145后边就开始循环了。如何从大量的数中检测一个循环?


点赞0


评论


四九圣尊四九圣尊

在总结一下,我的问题就是如何从数列中找出循环在没有明确知道循环截的时候。

比如说:233423342334如何让程序知道这是个循环。3657465467527432536...如何让程序知道这不是个循环呢?然后又如何把这个算法镶嵌到我的程序里去?

点赞0


评论


四九圣尊四九圣尊



点赞0


评论


编程猫-GangChen编程猫-GangChen

循环的出现就是出现重复的值,所以只需要判断当前这个数是否在前面就已经出现过了就可以了。这里推荐采用set(集合) 。每一次产生数的时候,就检测是不是在set里面,如果在,则出现循环,如果不在,就把它放到set里面。

点赞0


评论


这个问题很有意思,我这周时间特别忙,上一个问题也还没给你解答,这样,我今晚12点左右抽出2个小时来,帮你解答完这两个问题。明早你起来就能看到。

点赞0


评论


如果有别的会的也可以参与讨论啊。

然后解答完了明天我再更新一个“毒酒问题”,这个问题难度会大一些,各位暑假多思考。

点赞0


评论


四九圣尊四九圣尊

tc你莫要累到了,不急不急!

点赞0


评论


糖醋排骨糖醋排骨

毒酒问题我看过!!!

点赞0


评论


小假LittleFalse小假LittleFalse

tc,我想问问算法比赛到底神马时候举行?

点赞0


评论


@假·猫老祖

算法比赛很快了,“通天塔”系统开放后就会上线,预计在八月中。


点赞0


评论


@四九圣尊

你的观察是对的,事实上,如果在快乐数的验证中走到以下这个序列的任意一个数字:

 4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4

就一定会发生喵循环。

所以从这里面挑一个数字出来作为非快乐数的验证条件即可。

你选中了145,是对的,也可以选4,也可以选其他。

这是非常严谨的,但是如果没有发现这个循环,就不能发现这个规律。


顺便提一句,快乐数目前为止暂时还没有发现任何的用处,仅仅是数学家们平时自娱自乐的“王者荣耀”,一个游戏。

当年 NASA 曾经向太空发射过质数——用于引起其他文明的注意。可能以后数学家们也会发射些快乐数吧,不过我如果是外星人,恐怕实在理解不了地球人到底想做什么,说不定会很恐慌吧,一点也不快乐。——关于快乐数的一些趣谈。


点赞0


评论


编程猫泠泠编程猫泠泠

@四九圣尊,小小提示一下哈,代码看得出写的很认真,但是有没有测试过呢?数字十一不是快乐数哦,检测通过?可以再写严谨写,加油!


点赞0


评论


LUS圣武士LUS圣武士

emotion_思考

点赞0


评论