我正在阅读一篇关于Haskell在使用Collatz猜想时有多缓慢的文章,它基本上表明如果你将三个加一个乘以一个奇数,或者将一个偶数除以一个,你最终会得到一个.例如,3 - > 10 - > 5 - > 16 - > 8 - > 4 - > 2 - > 1.
本文中给出的程序是计算给定范围内最长的Collatz序列.C版本是:
#include <stdio.h>
int main(int argc, char **argv) {
int max_a0 = atoi(argv[1]);
int longest = 0, max_len = 0;
int a0, len;
unsigned long a;
for (a0 = 1; a0 <= max_a0; a0++) {
a = a0;
len = 0;
while (a != 1) {
len++;
a = ((a%2==0)? a : 3*a+1)/2;
} …
Run Code Online (Sandbox Code Playgroud)