c# – 项目欧拉解决方案#14
发布时间:2020-12-16 00:03:05 所属栏目:百科 来源:网络整理
导读:我有以下问题(来自ProjectEuler.net – Problem 14) 为正整数集定义以下迭代序列: n - n/2 (n is even)n - 3n + 1 (n is odd) 使用上面的规则并从13开始,我们生成以下序列: 13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1 可以看出,该序列(从13开始
我有以下问题(来自ProjectEuler.net –
Problem 14)
为正整数集定义以下迭代序列: n -> n/2 (n is even) n -> 3n + 1 (n is odd) 使用上面的规则并从13开始,我们生成以下序列: 13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1 可以看出,该序列(从13开始并在1结束)包含10个项.虽然尚未证实(Collat??z问题),但据认为所有起始数字都是1. 哪个起始编号低于一百万,产生最长的链? 注意:链条启动后,条款允许超过一百万. 我用了: static int road (int n) { int road = 0; while (n != 1) { if (n % 2 == 0) n = n / 2; else n = 3 * n + 1; road++; } return road; } static void Main(string[] args) { int max = 0,num = 0; for (int i = 1; i < 1000000; i++) { if (road(i) > max) { max = road(i); num = i; } } Console.WriteLine(num); } 但是没有打印输出. 解决方法
(我不打算给你一个完整的解决方案,因为欧拉项目旨在让你思考,而不是我们已经解决了问题的人.)
尝试确定链中的值有多大,并记住limits for integral types. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |