zoukankan      html  css  js  c++  java
  • python之判断是否为连续正整数之和

     1 #-*-coding:utf8-*-
     2 
     3 import math
     4 #获取用户输入的正整数
     5 numInput = int(input("Please input a digit:"))
     6 
     7 #使用函数判断此正整数是否为连续正整数之和
     8 #若可以则返回Yes,若不可以则返回No
     9 '''
    10 思路:
    11 1、奇数肯定可以至少被俩个连续整数相加得到
    12 2、若偶数连续除以2,最后得到结果为1,则可以被连续整数相加,若为0则不可以
    13 '''
    14 
    15 def judgeNum(num):
    16     #计算num的二次开方,并向上取整
    17     numSqrt = math.ceil((math.sqrt(num)))
    18 
    19     #设定默认正整数不可以为连续整数之和,即‘No’
    20     resultYesNo = 'No'
    21 
    22     #循环计算从2...numSqrt中每个整数,判断是否存在除2余数为1的情况
    23     for i in range(2,numSqrt+1):
    24         #判断是否被偶数整除
    25         if num % 2 == 1:
    26             resultYesNo = 'Yes'
    27             break
    28         else:
    29             num = num / 2
    30 
    31     return resultYesNo
    32 
    33 print(judgeNum(numInput))

    也可以使用math包中的log函数直接实现

    #-*-coding:utf8-*-
    import math
    
    #获取用户输入的正整数
    numInput = int(input("Please input a digit:"))
    
    #使用函数判断此正整数是否为连续正整数之和
    #若可以则返回Yes,若不可以则返回No
    
    '''
    思路:
    奇数都可以拆解成至少俩个整数之和
    偶数可以类似奇数算法,若除以2最后得到为0,则不可以为任意俩个连续整数之和
    '''
    
    resultYesNo = 'Yes'
    
    if math.log(numInput,2) == math.floor(math.log(numInput,2)):
        resultYesNo = 'No'
    
    print(resultYesNo)
    num = num / 2
  • 相关阅读:
    python学习之strip()
    python学习之find()
    Linux scp命令
    TensorFlow学习笔记4——变量共享
    TensorFlow学习笔记 速记1——tf.nn.dropout
    TensorFlow学习笔记 补充2—— 生成特殊张量
    sublime test3 安装及配置
    TensorFlow学习笔记3——Placeholders and feed_dict
    TensorFlow学习笔记 补充1——InteractiveSession
    TensorFlow学习笔记2——数据类型及简单运算
  • 原文地址:https://www.cnblogs.com/watertaro/p/12745387.html
Copyright © 2011-2022 走看看