问题标签 [collatz]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1764 浏览

java - 为什么 Collat​​z 猜想程序不适用于 Java 中的大整数

这是我为在 Java 上模拟 Collat​​z 猜想而编写的一个程序:

当我输入 n=6 时,我得到

3 10 5 16 8 4 2 1 需要 8 次迭代!

但是当我输入 n= 63728127 时,我得到

191184382 95592191 286776574 1433388287 430164862 215082431 645247294 322623647 967870942

什么地方出了错?为什么?我该如何解决?谢谢!

0 投票
1 回答
101 浏览

c++ - 尝试解决 Collat​​z p‌r‌o‌b‌l‌l‌m 时得到奇怪的结果

我正在尝试解决 Project Euler Problem 14。它要求找到生成最长序列的 100 万以下的数字。我所做的是创建一个向量 v,并使用特定数字的序列长度填充其元素。因此,位于位置 13 的元素将对应于由数字 13 生成的序列的长度,依此类推。但是,一些看似随机的元素需要非常大的数字,我无法弄清楚代码有什么问题。此外,当我用 1,000,000 对其进行测试时,我得到了一个完全错误的答案,但我知道该程序在手动测试并验证后可以处理一些小数字。

0 投票
4 回答
2166 浏览

c# - 3n+1猜想的算法指导

好的,我知道这听起来像是家庭作业;但无论如何。我正在尝试使用 C#解决这个问题。问题描述的摘录如下所示:

给定输入 n,可以确定打印的数字数量(包括 1)。对于给定的 n,这称为 n 的周期长度。在上面的例子中,22 的循环长度是 16。对于任何两个数字 i 和 j,您要确定 i 和 j 之间所有数字的最大循环长度。

问题

我什么都懂,除了一件事,周期长度。我只是不完全理解。我发现文本对它的定义模棱两可。我假设,循环长度是序列中有多少个数字,所以可以说输入为 10,循环长度为 8。但我只是不确定。您不需要任何代码,但我只要求指导。

另外,我已经知道如何从标准输入和输出中读取。由于问题在于编程竞赛格式。

我显示以 n 作为输入的数字序列的实现

笔记

虽然不是作业,但我想把它当作作业,所以我把它作为标签之一。

0 投票
4 回答
12061 浏览

algorithm - 最长科拉兹序列

在做实现Collat​​z 猜想的 Java 作业时,我想到了一个不同的目标,即找到最长的 Collat​​z 序列。我的程序计算步骤如下:

我想找到最高的步数。

0 投票
2 回答
523 浏览

prolog - 使用 Prolog 的 collat​​z-list 实现

我正在尝试创建一个collatz_list在 Prolog 中调用的函数。这个函数有两个参数,第一个是数字,第二个是列表。这个列表将是我这个函数的输出。所以,这是我的功能:

我正在努力创建输出列表。任何人都可以帮助我吗?

谢谢。

0 投票
2 回答
1005 浏览

haskell - 优化 Haskell 中最长的 Collat​​z 链

我一直在做项目欧拉问题来学习 Haskell。

我在路上遇到了一些障碍,但设法解决了问题 14。问题是,低于 1 000 000 的起始数字会产生最长的 Collat​​z 链(链开始后数字允许超过 100 万)。

我尝试了几种解决方案,但都没有奏效。我想做一个反转。从 1 开始并在数字超过 100 万时终止,但这显然行不通,因为条款可能会超过 100 万。

我尝试过记忆普通算法,但同样,数字太大,无法记忆。

我读过最明显的解决方案应该可以解决这个问题,但由于某种原因,我的解决方案需要 10 多秒才能达到 20 000 的最大值。更不用说 100 万了。

这是我目前正在使用的代码:

非常欢迎任何帮助。

0 投票
3 回答
1656 浏览

java - Java:在 Collat​​z 序列中找到最大的链

我找不到 Project Euler 问题 #14 的问题所在。我的第一步是找到算法,该算法一直有效,直到数字达到 120000 左右。代码中断并意识到我需要使用 BigIntegers。我转换了我的算法以适应这种变化,但现在它不起作用。

我添加了 System.out.print(chain_length) 来帮助我解决我的代码可能会中断的地方。

0 投票
1 回答
659 浏览

java - java中的扩展collat​​z计算

我真的很困惑如何使用 java for each - 循环正确。谁能帮我?

好的,这就是交易。我有一个无法摆脱的扩展 Collat​​z 问题。问题是我想列出两个变量 x 和 y 之间范围内的所有 Collat​​z 迭代,其中 x>y 在 0-10000 范围内。我的问题是,在第二个 foror 循环中,我想对 value 中的每个数字执行整个 collat​​z 计算,所以如果 value = 7 我想计算 x = 7 (16) 的 collat​​z 迭代,依此类推直到 y = 19 (20),整个序列是 16, 3, 19, 6, 14, 9, 9, 17, 17, 4, 12, 20, 20。我在 Java 中这样做。

导入 java.util。; 导入 java.lang。;

公共类 hackCollat​​z{

}

0 投票
1 回答
2507 浏览

loops - 计划 while 循环

我在方案语法方面有点新......我正在尝试制作一个简单的程序,您可以在其中输入一个整数,如果整数是偶数做某事,如果它是奇怪的做其他事情。我能够做到这部分。现在,我需要创建一个循环,我可以在其中递减数字直到等于 1。这是我的代码:

输出应该是一个数字序列。换句话说,它应该在一个列表中。

0 投票
2 回答
1553 浏览

loops - 方案中的 for 循环

我有点困惑如何在方案中构造一个 for 循环。for 循环应该在第二部分中实现。它需要一个数字列表并将每个元素插入到第一部分的列表中以查找长度。我用电缆来获取第一个元素,但我需要一个 for 循环或其他什么来获得这样的输出:'(7 10 5 16 106 37) 这是我的代码:

这是输出: