“主要青蛙”是一种奇怪的动物,它在整数之间跳跃,直到3或19点到达.
您的程序应该接受整数n作为输入,并输出以下算法(3或19)的结果。
对于给定的整数n >= 2:
f成为青蛙的位置。它最初被设置为nf = 3或f = 19:青蛙停止跳-停止程序并输出f。f是素数:青蛙跳到2×f-1位置。回到第二步。f是复合的:让d是f's的最大素数因子。青蛙跳到f-d位置。回到第二步。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 (我已经为这些值检查了程序结束)。
发布于 2017-10-19 09:48:11
发布于 2017-10-20 01:25:59
发布于 2017-10-19 16:51:36
h(n)==(repeat(n=3 or n=19 or n<2=>break;prime? n=>(n:=2*n-1);n:=n-last(factors(n)).factor);n)测试:
(4) -> [[i,h(i)] for i in [10,74,94,417,991,9983]]
(4) [[10,3],[74,19],[94,3],[417,3],[991,19],[9983,19]]
Type: List List Integer将有68个字节函数。
q x==(n<4=>3;n=19=>n;prime? n=>q(2*n-1);q(n-last(factors n).factor))但是对于n=57991 (如果我还记得的话),它将退出保留的堆栈空间。
https://codegolf.stackexchange.com/questions/145741
复制相似问题