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
  • 相关阅读:
    Linux下汇编语言学习笔记31 ---
    Linux下汇编语言学习笔记30 ---
    Linux下汇编语言学习笔记27 ---
    Linux下汇编语言学习笔记26 ---
    Linux下汇编语言学习笔记25 ---
    设计模式 关注点分离
    设计模式 关注点分离
    ALAsset和ALAssetRepresentation详解
    ALAsset和ALAssetRepresentation详解
    VIEW当中自定义属性的使用
  • 原文地址:https://www.cnblogs.com/watertaro/p/12745387.html
Copyright © 2011-2022 走看看