“原始青蛙”是一种奇怪的动物,会在整数之间跳跃,直到到达3或19。
您的程序应接受一个整数n
作为输入,并输出以下算法(3
或19
)的结果。
对于给定的整数n >= 2
:
- 设
f
青蛙的位置。最初设置为n
- 如果
f = 3
或f = 19
:青蛙停止跳跃停止程序和输出f
。 - 如果
f
是素数:青蛙跳到那个位置2×f-1
。返回步骤2。 - 如果
f
为Composite:则将其d
设为f
最大的除数。青蛙跳到那个位置f-d
。返回步骤2。
例子:
一个例子n = 5
:
5 > 9 > 6 > 3 stop
该程序应输出3
。
另一个例子n = 23
:
23 > 45 > 40 > 35 > 28 > 21 > 14 > 7 > 13 > 25 > 20 > 15 > 10 > 5 > 9 > 6 > 3 stop
同样,程序应输出3
。
测试用例:
10 => 3
74 => 19
94 => 3
417 => 3
991 => 19
9983 => 19
您可以假设1 < n < 1000000
(我已检查程序结束时是否有这些值)。
3
或19
,我们可以更改算法中的第2项,说如果青蛙进入了任何循环(遇到了之前看到的位置),那么它将停止跳跃并返回最小的该循环的成员。