找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 14911|回复: 5

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

[复制链接]
发表于 2016-4-5 09:57:24 | 显示全部楼层 |阅读模式
/*
通过传入第一个值和圈数,返回结果。
**/
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

评分

参与人数 2PB -2 技术 +1 收起 理由
codegay + 1 1
pcl_test -2 贴出原题或原题链接

查看全部评分

发表于 2016-4-5 10:01:28 | 显示全部楼层
本帖最后由 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))
发表于 2016-4-5 10:04:02 | 显示全部楼层
这个网站题很多,https://projecteuler.net/
 楼主| 发表于 2016-4-5 16:09:52 | 显示全部楼层
回复 3# codegay


    谢谢指教!!!!
发表于 2016-4-5 21:07:58 | 显示全部楼层
本帖最后由 codegay 于 2016-4-5 21:10 编辑

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

以及sum是python中一个内置函数。保持不要用内置函数当变量名是个好习惯。
 楼主| 发表于 2016-4-6 11:17:27 | 显示全部楼层
本帖最后由 元芳你怎么看 于 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.                        
  22.                 return sumfactors

复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 00:47 , Processed in 0.020185 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表