python每日一题_Python:每日一题003

题目:

一个整数,它加上100和加上268后都是一个完全平方数,请问该数是多少?

程序分析:

在10000以内判断,将该数加上100后再开方,加上268后再开方,如果开方后的结果满足如下条件,即是结果。提示:使用 math 模块。

个人解题思路及结果:

from math import sqrt

def issqrt(num):

x = int(sqrt(num))

pow_x = x * x

return pow_x == num #判断一个数是否可以被开方,如果不能被开方则int后数值变小,就与原数数值不相等

num_list = []

n = -100 #注意这里的起点,题目没有说明不能为负整数,应该从可以开方的0开始算起,即起点取值到-100

while n < 10000:

a = n + 100

b = n + 268

if issqrt(a) and issqrt(b):

num_list.append(n)

n = n + 1

print("这些数是",num_list)

其他的参考解答:

解答1

import math

for i in range(-100,10001):

if math.sqrt(i+100)%1 == 0 and math.sqrt(i+268)%1 == 0: #这里是直接计算除以1取余是否为0

print(i)

解答2

for x in range(-100, 10000):

a = (x + 100) ** 0.5

b = (x + 268) ** 0.5

if not a % 1 and not b % 1:

print(x)

解答3

from math import sqrt

print([x for x in range(-100,10000) if (int(sqrt(x+100)))**2==x+100 and (int(sqrt(x+268)))**2==x+268])

#直接用列表解析式生成,一个数+100的开方的平方等于一个数加100,如果开方后有小数则不相等。

(本文编号003,首发于2018年9月13日)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值