鱼C论坛

 找回密码
 立即注册
查看: 659|回复: 5

[已解决]新手上路

[复制链接]
发表于 2020-4-9 20:21:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这个用Python怎么做能教一下吗
最佳答案
2020-4-9 22:46:50
楼上的计算因子函数,会导致(6,11)被误判,主要题目也有问题,亲密数对的准确要求是:小于自身的因子和,即6的因子和是1,2,3,不含6;11的因子和是1。
def SumOfFactor(num):
    sum = 0
    for i in range(1,(num//2)+1,1):
        if num%i==0:
            sum += i
    return sum


for a in range(6,10001,1):
    b = SumOfFactor(a)
    if SumOfFactor(b) == a:
        if a<b:
            print('(' ,a,',',b,')')
微信图片_20200409202023.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-9 20:24:06 | 显示全部楼层
逻辑:
首先 定义一个函数,用来计算一个数的因子和
然后x遍历6-10000,y遍历x+1-10000
通过上面的函数判断是否满足亲密数条件,输出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-9 22:17:57 | 显示全部楼层
这样写对不对?
#计算因子的函数
def sum_yinzi(num):
    sum_yinzijisuan = 0
    for i in range(1,num+1):
        if num % i == 0 :
            sum_yinzijisuan += i
    return sum_yinzijisuan

#验证
#print(sum_yinzi(220))
#print(sum_yinzi(284))
#print(sum_yinzi(503))

#循环计算,加入列表
a = []
b = []
for n in range(6,1001):
    resualt = sum_yinzi(n)
    a.append(n)
    b.append(resualt)

#判断因子对
for m in range(0,len(a)):
    for n in range(m,len(a)):
        if (b[m] ==b[n]) and (a[m] != a[n]):
            print(a[m], a[n])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-9 22:46:50 | 显示全部楼层    本楼为最佳答案   
楼上的计算因子函数,会导致(6,11)被误判,主要题目也有问题,亲密数对的准确要求是:小于自身的因子和,即6的因子和是1,2,3,不含6;11的因子和是1。
def SumOfFactor(num):
    sum = 0
    for i in range(1,(num//2)+1,1):
        if num%i==0:
            sum += i
    return sum


for a in range(6,10001,1):
    b = SumOfFactor(a)
    if SumOfFactor(b) == a:
        if a<b:
            print('(' ,a,',',b,')')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-9 22:57:24 | 显示全部楼层
for a in range(6,10001,1):
    b = SumOfFactor(a)
    if b>a:    #避免成对出现(220,284)和(284,220)
        if SumOfFactor(b) == a:
            print('(' ,a,',',b,')')
这个运行效率高一点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-10 00:22:47 | 显示全部楼层
bigbird0419 发表于 2020-4-9 22:46
楼上的计算因子函数,会导致(6,11)被误判,主要题目也有问题,亲密数对的准确要求是:小于自身的因子和, ...

嗯,我没理解对题目。。。。。。。。哎。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-2 01:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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