基于python的完全数之TDD版本(修改)
来源:互联网 发布:java array list 泛型 编辑:程序博客网 时间:2024/06/03 12:03
实现代码:
#!/usr/bin/env python # -*- coding: utf-8 -*- # Filename: perfect.pyfrom math import sqrt, floordef is_factor(factor, num): return num % factor == 0def add_factors(factor, num): s = factor if int(num / factor) != factor: s += int(num / factor) return sdef cal_aliquot_sum(num): sum = 1 for i in range(2, int(floor(sqrt(num))) + 1): if (is_factor(i, num)): sum += add_factors(i, num) return int(sum) def aliquot_sum(num): sum = 0 if (num > 0): sum = cal_aliquot_sum(num) return sumdef is_perfect(num): return aliquot_sum(num) == num
测试代码:
#!/usr/bin/env python # -*- coding: utf-8 -*- # Filename: test_perfect.pyimport unittestfrom perfect import *'''' 1. I need judge if a number is a factor' 2. I need the sum of aliquot sum of a num' 3. I need judge if a number is perfect'''class PerfectNumTestCase(unittest.TestCase): def setUp(self): self.PERFECT_NUMS = [6, 28, 496, 8128, 33550336] return def tearDown(self): return def test_1_is_factor_of_10(self): self.assertTrue(is_factor(1, 10)) def test_10_is_factor_of_10(self): self.assertTrue(is_factor(10, 10)) def test_3_is_not_factor_of_10(self): self.assertFalse(is_factor(3, 10)) def test_aliquot_sum_for_6(self): self.assertEqual(6, aliquot_sum(6)) def test_aliquot_sum_for_28(self): self.assertEqual(1 + 28 + 2 + 14 + 4 + 7 - 28, aliquot_sum(28)) def test_aliquot_sum_for_16(self): self.assertEqual(1 + 16 + 2 + 8 + 4 - 16, aliquot_sum(16)) def test_aliquot_sum_for_negative(self): self.assertEqual(0, aliquot_sum(-20)) def test_is_perfect(self): for num in self.PERFECT_NUMS: self.assertTrue(is_perfect(num)) def test_is_non_perfect(self): for num in (2, 10000): if self.PERFECT_NUMS.count(num) > 0: self.assertTrue(is_perfect(num)) else: self.assertFalse(is_perfect(num))if __name__ == "__main__": unittest.main()
测试报告:
- 基于python的完全数之TDD版本(修改)
- 基于python的完全数之非TDD版本
- 基于python的完全数之TDD版本
- 基于c++的完全数之非TDD版本
- 基于c++的完全数之TDD版本
- 基于c++的完全数之非TDD版本(2013.8.20)
- debian基于系统修改 Python 版本
- 修改mac的Python版本
- 基于duilib修改的版本上传了
- 基于spring下的TDD开发
- 基于spring下的TDD开发
- 基于spring下的TDD开发
- 基于机器学习的TDD开发模式
- TDD 实践之路 - TTCMS完全构建历程(DELPHI)
- 美妙的数学之完全数
- python之漂亮令人发指呀:找完全数
- python 版本的基于redis 的queue
- Oracle Study之--基于ASM的TSPITR(基于表空间的完全恢复)
- VS2008中设置main函数的argv[1] 【转载】
- 用C#写程序安装包
- 求出n中选r个的组合系数c(n,r),只用加法实现 即 求二项式系数(杨辉三角),
- cookie
- 媒体云
- 基于python的完全数之TDD版本(修改)
- cocos2d-x 卡牌翻牌效果的实现
- Ubuntu12.04下安装Git
- 浅谈网络游戏的设计——服务器端编程(2)
- 消息传送 Handler
- Linux 开启VNCSERVER
- [C#基础知识系列]全面解析C#中静态与非静态
- 大表添加有默认值的列
- 追求最强的vim(未完待续)