[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[原创代码] 无忧公主的数学时间134扩展

/*
通过传入第一个值和圈数,返回结果。
**/
def Ghost_sumfactors(num,n):
        tmpnum = int(num)
        a = num - tmpnum
        if a != 0:
                return "Please enter a positive integer!"
        else:
                for i in range(1,n+1):
                        sum = 1 + num                       
                        m = int(math.sqrt(num)) + 1
                        for j in range(2,m):
                                if num%j == 0:
                                        sum = sum + j + num//j
                        num = sum
                       
                return sum
2

评分人数

本帖最后由 元芳你怎么看 于 2016-4-6 11:26 编辑
  1. """
  2. 根据朋友们提出的问题和建议新改了下
  3. 无忧公主的数学时间134:
  4. http://mp.weixin.qq.com/s?__biz=MzI5ODEwMDQyNw==&mid=403013919&idx=2&sn=7439014ae0182cb4b0222fc2234b34c3&3rd=MzA3MDU4NTYzMw==&scene=6#rd
  5. """
  6. def Ghost_sumfactors(num,n):
  7. tmpnum = int(num)
  8. a = num - tmpnum
  9. if a != 0:
  10. return "Please enter a positive integer!"
  11. else:
  12. for i in range(1,n+1):
  13. sumfactors = 1 + num
  14. m = int(math.sqrt(num)) + 1
  15. for j in range(2,m):
  16. if num%j == 0:
  17. sumfactors = sumfactors + j + num//j
  18. if math.sqrt(num) - m + 1 == 0:
  19. sumfactors = sumfactors - math.sqrt(num)
  20. num = sumfactors
  21. return sumfactors
复制代码

TOP

本帖最后由 codegay 于 2016-4-5 21:10 编辑

看她的解题思路 http://mp.weixin.qq.com/s?__biz= ... Mw==&scene=6#rd

以及sum是python中一个内置函数。保持不要用内置函数当变量名是个好习惯。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 3# codegay


    谢谢指教!!!!

TOP

这个网站题很多,https://projecteuler.net/
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

本帖最后由 codegay 于 2016-4-6 01:56 编辑
  1. """
  2. 无忧公主的数学时间134.py
  3. http://mp.weixin.qq.com/s?__biz=MzI5ODEwMDQyNw==&mid=403013919&idx=2&sn=7439014ae0182cb4b0222fc2234b34c3&3rd=MzA3MDU4NTYzMw==&scene=6#rd
  4. 2016年4月5日 21:46:24
  5. 求正整数n的因数之和的因数之和.
  6. """
  7. #输入一个正整数n,返回n因数之和的因数之和.也就是2次求因数之和
  8. def factorsx(n,x=2):#x为进行求因素之和的次数
  9.     #def f(n):return sum([r for r in range(1,n+1) if n%r==0])#返回N的因数之和
  10.     #f=lambda n:sum([r for r in range(1,n+1) if n%r==0])#等效写法
  11.     f=lambda n:n+sum([r for r in range(1,n//2+1) if n%r==0])#-_-假装优化一下
  12.     for r in range(x):
  13.         n=f(n)
  14.     print(n)
  15.     return n
  16. factorsx(11)
复制代码
楼主的程序可能有BUG,以下输出97,按我的理解,应该是91.

print(Ghost_sumfactors(36,1))
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

返回列表