H&NCTF(BabyPQ)

题目:

本题目考查欧拉函数的理解以及解方程的能力

from sympy import symbols, solve

n= 69458248383170769656408660605582189900524717041731341801736915064101627602876545698461851784741302896208309596395036449631499544897535978374691724773453165350667038394673987461747669981917207103662233935914042399728404140175556831965869539650304653706770145635146288055167289133901179526446984833546950905897
phin= 69458248383170769656408660605582189900524717041731341801736915064101627602876545698461851784741302896208309596395036449631499544897535978374691724773453148324847855847087170055944126726591222480946939250886651998534219320151501102070558083965436275370963422149304128641457776942813481193261565336339191277140


# 定义符号变量
x = symbols('x')

# 定义方程
equation = x**2 - (n+1-phin)*x + n

# 解方程
solutions = solve(equation, x)

# 输出解
print("方程的解为:", solutions)

另一中代码,下面这种代码数学推导过程与上面代码差不多一致但结果显示不完整,数据计算不精确,故不推荐使用

n= 80209555582354014419325505539785589302577144677445396353770402925887163221410057105534063904317965314713464744431352432128979685848717282559071799471101441320604500394144208739703987373949627479829661355268082869443060474530704572507563416817305525784266851146796963069170686528077744749597806048339439478421
phin= 80209555582354014419325505539785589302577144677445396353770402925887163221410057105534063904317965314713464744431352432128979685848717282559071799471101423401848885321148130940889670962907272115326158564621643292027224325053764558382386580700807471778973495044237506247855122379258720118998037171725242549952
m=n-phin+1

import math

def solve_for_p(s, t):
    discriminant = s**2 - 4 * t
    if discriminant < 0:
        print("No real solutions")
        return None, None
    elif discriminant == 0:
        p = s / 2
        return p, p
    else:
        p1 = (s + math.sqrt(discriminant)) / 2
        p2 = (s - math.sqrt(discriminant)) / 2
        return p1, p2

p1, p2 = solve_for_p(m, n)
if p1 is not None:
    print("The solutions are:")
    print("p1 =", p1)
    print("p2 =", p2)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值