[英]C: How to find that a certain number of characters are present in a string in any sequence?
[英]Find number in Ulam Sequence C
我希望能够创建 Ulam 编号序列并能够找到第 n 个 Ulam 编号。 例如,如果您的输入为“8”,则输出应为 13。如果输入为 700,则输出应为第 700 个乌拉姆数(不知道具体是什么)。 前两个数字是 1 和 2。
我想我需要一个初始化为 1 和 2 的数组,并使用双循环通过检查下一个数字是否是具有唯一表示的最小可能值来获取下一个数字。
我只是不确定如何在 C 中编码。但是,即使是伪代码也能帮助我解决这个问题。 任何帮助表示赞赏。
Ulam 序列中的Ulam 数必须只能以一种方式表示为它的两个前辈之和。
注意两个前辈并不是“独立”的——如果你选择一个,那么你可以计算第二个。
示例:序列以数字 1、2、3、4、6、8、11、13、16、18 开始。
例如 21 是下一个数字吗? 开始检查所有以前的数字,如下所示:
1
。 然后1 + x = 21
。 对于这里, x = 21 - 1 = 20
。 20
是序列的一个元素吗? 不。2
。 然后2 + x = 21
。 对于这里, x = 21 - 2 = 19
。 19
是序列的一个元素吗? 不。3
。 然后3 + x = 21
。 对于这里, x = 21 - 3 = 18
。 18
是序列的一个元素吗? 是的 => 我们找到了一种表示: 21 = 3 + 18
。4
。 然后4 + x = 21
。 对于这里, x = 21 - 4 = 17
。 17
是序列的一个元素吗? 不。6
。 然后6 + x = 21
。 对于这里, x = 21 - 6 = 15
。 15
是序列的一个元素吗? 不。8
。 然后8 + x = 21
。 对于这里, x = 21 - 8 = 13
。 13
是序列的一个元素吗? 是 => 我们找到了另一种表示: 21 = 8 + 13
,所以21
不是序列的成员。因此,要检查一个数字是否是序列的成员,您需要检查它的所有前辈。
如果您按照描述的方式检查所有数字,您将一一发现序列中的所有成员。 到达所需索引时停止。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.