
没想到胡莹老师愚人节也皮了一把。
这个问题用Python可以很方便的解决。首先乘积是7140229933,那么我们我们开平方
>>> import math
>>> math.sqrt(7140229933)
84499.8812602716
>>>
然后到网上下载了素数列表

记载并保存到名为data的数组中:
>>> f = open('primes-to-100k.txt','r')
>>> for line in f.readlines():
... data.append(int(line[:-1]))
然后就很简单了,在素数列表里找到能够被7140229933
整除的数字就好了,直接一个列表推导式搞定:
>>> [x for x in data if 7140229933 % x == 0 ]
[83777, 85229]
就两个数,自己尝试下就好了,所以微信号是Lin8377785229
,然后第2个就更简单了,道理是一样的而且这个数字还比 7140229933小,开平方:
>>> b=6541367000
>>>
>>> c = math.sqrt(b)
>>> c
80878.71784344755
那么直接用相同的方法搞定就是了,只要在素数列表data
中的两个数字的乘积整除1000
以后是6541367就好了,当然这肯定是最暴力的方法了:
>>> [x*y for x in data for y in data if x*y//1000==6541367]
[6541367489, 6541367771, 6541367771, 6541367489]
然后去刷了个碗,结果出来了,虽然很暴力,而且第2个题目的答案不唯一,小米15.6 pro笔记本,就是这么优秀。
网友评论