• 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 knn自我实践
    NumPy常用函数总结
    Max Sum
    A Mathematical Curiosity
    设计模式 策略模式 以角色游戏为背景
    背包问题
    搬寝室 hdu
    实现app上对csdn的文章查看,以及文章中图片的保存 (制作csdn app 完结篇)
    Android 面试精华题目总结
    Java自定义比较器Comparator
  • 原文地址:https://www.cnblogs.com/watertaro/p/12745387.html
Copyright © 2020-2023  润新知