一个很有趣的数学题

发布于 2020-07-21  5658 次阅读


题目是这样的
设$p$是素数,${\sqrt{p}}$的小数部分为$x$,$\frac{1}{x}$的小数部分为$\frac{{\sqrt{p}}-15}{37}$。求所有满足条件的$p$的值

接下来我会进行代码计算和数学计算,当然,我更喜欢数学推导,因为代码只是一种遍历看是否成立的过程,这种问题数学推导后得到答案是真的快乐

首先,无论是代码还是数学证明,都需要确定x的范围

$\because 0\leq \frac{\sqrt{p}-15}{37}\leq 1\therefore 225\leq p\leq 2704$

代码


import math

def test(p):
    sqrt_p=math.sqrt(p)
    x=math.modf(sqrt_p)[0]
    if x==0:
        return False
    else:
        mod_x=math.modf(1/x)[0]
        return  math.isclose(sqrt_p-15, 37*mod_x, rel_tol=1e-5)

def is_prime(n):
    if n==1:
        return False
    for i in range(2, int(math.sqrt(n) + 1)):
        if n % i == 0:
            return False
        return True


for i in range(225,2704):
    if test(i) and is_prime(i):
        print(i)

python更多的起到的是验证的作用,我还是更喜欢数学推导

数学

根据已知条件:
$$\left ( 1\right )\sqrt{p}-\left [ \sqrt{p}\right ]= x$$
$$\left( 2\right ){\frac{1}{x}}-\left [ \frac{1}{x}\right ]= \frac{\sqrt{p}-15}{37}$$
不妨设$k^{2}< p< (k+1)^{2}$,将(1)代入(2),注意到$\left [ \sqrt{p}\right ]=k$,有$\frac{1}{\sqrt{p}-k}-\left [ \frac{1}{\sqrt{p}-k}\right ]=\frac{\sqrt{p}-15}{37}$。
将分母有理化后得:
$$\left ( 3\right )(37-p+k^{2})\sqrt{p}+(37k+15p-15k^{2})=37(p-k^{2})\left [ \frac{\sqrt{p}+k}{p-k^{2}}\right ]$$
由于(3)右边是整数,所有左边也是整数。于是$p=37+k^{2}$。再带回(3),有$\frac{15+k}{37}=\left [ \frac{\sqrt{p}+k}{37}\right ]$。由于等式右侧同样为整数,重复上述步骤,得到$k=37n-15$,同时由于最开始得到$225\leq p\leq 2704$,得到$k^{2}+37<2704$,于是$k<52$。
代入$n=1$,$k=22$,并且当$n=2$时,$k=59$,并且依次代入后与$k<52$矛盾。于是$k=22$,代入得到$p=37+k^{2}$,得到$p$为$521$