愚人节浙大理科学霸征婚题目的粗暴解法

2019-04-03  本文已影响0人  少儿创客

没想到胡莹老师愚人节也皮了一把。

这个问题用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笔记本,就是这么优秀。

上一篇下一篇

猜你喜欢

热点阅读