寻找n以内的亲密数对 python

寻找n以内的亲密数对 python,第1张

概述问题描述:寻找n以内的亲密数对。代码格式如下:deffac(n):    ...    return xxxn=int(input())  #此处输入由系统自动完成不需要自己输入,只要写这样一条语句即可题目内容:对于两个不同的整数A和B,如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全

问题描述:

寻找n以内的亲密数对。
代码格式如下:
def fac(n):
    ...
    return  xxx

n = int(input())   # 此处输入由系统自动完成不需要自己输入,只要写这样一条语句即可

题目内容:
对于两个不同的整数A和B,如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将A和B称为亲密数。自定义函数fac(x)计算x包括1但不包括本身的所有因子和并返回。从键盘输入整数n,调用fac()函数寻找n以内的亲密数并输出。注意每个亲密数对只输出一次,小的在前大的在后,例如220-284。
输入格式:
按提示用input()函数输入
输出格式:
按样例形式,可使用形如“print("{}-{}".format(参数1, 参数2))”输出语句进行亲密数对的输出
输入样例:
500
输出样例:
220-284

时间限制:1500ms内存限制:100000kb
 

# 计算给定数的所有因子# 因子就是所有可以整除这个自然数的整数,不包括这个数自身。def getAllFactor(n):    List=[]    if n==1:        List.append(1)    else:        for i in range(1,int(n/2)+1):            if n%i==0:                List.append(i)    return Listdef fac(n):    List=[]    dict={}    for i in range(1,n):        dict["{0}".format(i)]=sum(getAllFactor(i))    for a in range(1,n-1):        for b in range(a+1,n):            sumOfListA=dict["{0}".format(a)]            sumOfListB=dict["{0}".format(b)]            if(sumOfListA==b and sumOfListB==a):                List.append("{0}-{1}".format(a,b))    return print(List)import timestart=time.time()fac(500)end=time.time()print(end-start)

执行结果: 

['220-284']0.08019304275512695

网页提交时,反馈执行时间超标,更改程序为:

# 计算给定数的所有因子# 因子就是所有可以整除这个自然数的整数,不包括这个数自身。def getAllFactor(n):    List=[]    if n==1:        List.append(1)    else:        for i in range(1,int(n/2)+1):            if n%i==0:                List.append(i)    return Listdef fac(n):    for a in range(1,n):        b = sum(getAllFactor(a))        if b>a and b<=n and sum(getAllFactor(b)) == a:            print('{0}-{1}'.format(a,b))import timestart=time.time()fac(500)end=time.time()print(end-start)

执行结果: 

220-2840.005019664764404297

速度提升了不少,终于提交成功

总结

以上是内存溢出为你收集整理的寻找n以内的亲密数对 python全部内容,希望文章能够帮你解决寻找n以内的亲密数对 python所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1188142.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存