首页 > 学院 > 开发设计 > 正文

IdentifySmithNumbers

2019-11-14 17:11:30
字体:
来源:转载
供稿:网友

Link:

  https://www.hackerrank.com/challenges/identify-smith-numbers

 

 1 def sum_digits(n): 2     return sum(int(x) for x in str(n)) 3  4 def PRime_factors(n): 5     factors = [] 6     for i in xrange(2, n): 7         if i*i > n: 8             break 9         elif n % i == 0: # 短除法核心10             while n % i == 0:11                 factors.append(i)12                 n /= i13     if n > 1:14         factors.append(n) 15     return factors16 17 n = int(raw_input())18 19 factors = prime_factors(n)20 print '1' if len(factors) > 1 and sum_digits(n) == sum(sum_digits(x) for x in factors) else '0'

 

 

本题
  “数论” -- “质因子分解”
学习到
  如何理解(读)代码
    哪里是代码的核心,哪里是代码的边缘可变的、灵活的  
      比如 n % i == 0 这里就是“短除法”的判断核心
      而if i * i > n, 这种就是减少判断次数的外围
      if和while层叠的顺序也是灵活可变的
算法整体
  get了《算法导论》


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表