题意
输入 $k$(1 \leq k \leq 100)个正整数 $p_1, p_2, ..., p_k$(1 < p_i < 2{31}),找出 $k$ 个非负整数 $e_i$ 使得 $N = \prod _{i=1}^k {p_i}^{e_i}$ 为 $2^x$,$x$ 为正整数。注意,由于 $x>0$,$e_i$ 不能全为0.如果无解输出NO,否则输出最大的 $x$。
分析
梅森数:$2^p-1$,指数 $p$ 是素数。常记为 $Mp$.
如果梅森数是素数,就称为梅森素数。
若 $2^n-1$ 是素数,则指数 $n$ 也是素数(假设 $n$ 是合数,$2^n-1$ 一定能被分解)
若 $n$ 是素数,$2^n-1$ 却未必是素数。
有一个重要的性质:“一个数能够写成 $n$ 个不重复的梅森素数的乘积” 等价于 "这个数的约数和是2的幂"。
例如,$2^3-1=7$,7的约数为1和7,$1+7 = 2^3$
必须是不重复的,$3 \times 3 = 9$,但9的约数1、3、6、9,和不是2的幂。
在题给的范围内,梅森素数只有8个。
代码
感觉爆搜就可以了,不会写
参考链接:
1. https://blog.csdn.net/miku23736748/article/details/52135932