zoukankan      html  css  js  c++  java
  • python3练习100题——003

    今天继续~答案都会通过python3测试~

    原题链接:http://www.runoob.com/python/python-exercise-example3.html

    题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

    我的代码:

    import math
    def fun():
        for i in range(-100,10000):    #i的range范围不够精确,具有偶然性
            x=math.sqrt(i+100)%1
            y=math.sqrt(i+268)%1
            if x==0 and y==0:
                print(i)

    思考:

    没有想那么多,其实这道题要从数学的方面思考得多一点,以确定该数的范围:

    假设有m和n两个数满足:

    i+100 =n^2

    i+268=m^2

    首先可以确定i的下限:

    i+100=n^2>0, i >-100

    然后可以确定i的上限:

    由上式可得,m^2-n^2 =168

    m与n最少得差一个数:|m|>=|n+1|

    (n+1)^2-n^2<=168  得出n<=83.5<84

    所以i<84^2-100=6956

    这样,就可以得到i的循环在range(-100,6956)以内了!

    当然如果从数学的方面多去思考能够大大减少运算量,比如从m、n的值入手(如原答案)。

  • 相关阅读:
    实验 7 综合练习一
    实验或作业模版: 实验 6-1 最大公约数 最小公倍数
    实验 6 数组1
    Pro
    作业 4 函数应用
    老大
    双端队列
    zxa and leaf
    Baby Ming and Matrix games
    The more, The Better
  • 原文地址:https://www.cnblogs.com/drifter/p/9072167.html
Copyright © 2011-2022 走看看