黑色数学118关

黑色数学118关

先直接报答案 X=4 Y=13

X和Y是两个整数,且满足2<=X<=Y<=99
甲知道两个数的和,乙知道两个数的积。
一、甲:你不知道这两个数是什么,我也不知道。
二、乙:我现在知道了。
三、甲:我现在也知道了。
那么X和Y分别是多少?

代码先放这 有空再写注释
主要思路就是,乙的数不能有唯一因式分解方法(如9=33,或者9801=9999),慢慢往前推


```python
set1=set()
for i in range(4,9802):
    count1=0
    for j in range(2,int(i**0.5)+1):
        if i%j==0 and i/j<100:
            count1+=1
            ans=j
    if count1==1:
        set1.add(int(i/ans)+ans)

dict1={}
for i in range(4,9802):
    count1=0
    count2=0
    for j in range(2,int(i**0.5)+1):
        if i%j==0 and i/j<100 and int(i/j)+j not in set1:
            count1+=1
            ans=j
        elif i%j==0 and i/j<100 and int(i/j)+j in set1:
            count2+=1
    if count1==1 and count2>0:        
        if int(i/ans)+ans not in dict1:
            dict1[int(i/ans)+ans]=True
        else:
            dict1[int(i/ans)+ans]=False
for keys in dict1:
    if dict1[keys]==True:
        print(keys)


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值