给定正整数n > 2
。我们将其转换为数组,如下所示:
- 如果等于则
2
返回一个空数组 - 否则,创建所有
n
升序排列的所有素数的数组,然后将每个元素替换为其素数序列中的索引,最后将每个元素转换为数组
例如,让我们将数字转换46
为数组。首先,将其转换为主要因子数组:
[2, 23]
号码23
是9
个质数,所以更换2
空数组并23
用[9]
。数组现在变为:
[[], [9]]
的主要因子9
是3
和3
,因此:
[[], [3, 3]]
对两个都做相同的事情3
:
[[], [[2], [2]]]
最后:
[[], [[[]], [[]]]]
现在,要对其进行编码,我们只需用替换每个开括号,1
并将每个闭括号替换为0
,然后删除所有结尾的零,并1
从结尾删除一个。这是我们的二进制数。使用上面的示例:
[ ] [ [ [ ] ] [ [ ] ] ]
| | | | | | | | | | | |
| | | | | | | | | | | |
V V V V V V V V V V V V
1 0 1 1 1 0 0 1 1 0 0 0
现在只需丢弃最后三个零和最后一个1
。数目变为10111001
这是185
十进制。那是预期的输出。请注意,从数组到二进制的转换不包括主数组的括号。
输入项
n
大于的正整数2
。
输出量
编码的整数n
。
规则和IO格式
- 适用标准规则。
- 输入可以是字符串或数字(但如果是字符串,则必须以10为底)。
- 输出可以是字符串或数字(但如果是字符串,则必须以10为底)。
- 这是代码高尔夫球,最短的答案以字节为单位!
测试用例
根据要求提供更多测试用例。
3 ---> 1
4 ---> 2
5 ---> 3
6 ---> 5
7 ---> 6
8 ---> 10
9 ---> 25
10 ---> 11
10000 ---> 179189987
10001 ---> 944359
10002 ---> 183722
10003 ---> 216499
10004 ---> 2863321
10005 ---> 27030299
10006 ---> 93754
10007 ---> 223005
10008 ---> 1402478
2
因为不需要提交来处理它。