当前位置:首页 » 编程语言 » python完数

python完数

发布时间: 2022-10-09 01:06:44

❶ 找出1000以内的所有完数python

#求1000以内的完数
for i in range(1, 1001):
sum_list = []
for j in range(1, i):
if i % j:
continue
else:
sum_list.append(j)
if sum(sum_list) == i:
print("its factors are", sum_list)
print(i)
#------------------------------
its factors are [1, 2, 3]
6
its factors are [1, 2, 3, 4, 6, 8]
24
its factors are [1, 2, 4, 7, 14]
28
its factors are [1, 2, 4, 8, 16, 31, 62, 124, 248]
496

❷ 1000以内的完数有哪些

有三个,6、28、496。

第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。

第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。

第三个完全数是496,有约数1、2、4、8、16、31、62、124、248、496,除去其本身496外,其余9个数相加,1+2+4+8+16+31+62+124+248=496。

推导公式:

大数学家欧拉曾推算出完全数的获得公式:如果p是质数,且2^p-1也是质数,那么(2^p-1)X2^(p-1)便是一个完全数。

例如p=2,是一个质数,2^p-1=3也是质数,(2^p-1)X2^(p-1)=3X2=6,是完全数。

例如p=3,是一个质数,2^p-1=7也是质数,(2^p-1)X2^(p-1)=7X4=28,是完全数。

例如p=5,是一个质数,2^p-1=31也是质数,(2^p-1)X2^(p-1)=31X16=496是完全数。

❸ 如何在python用函数求出2至100之间的完全数

a=range(1,101)

b=range(1,101)

result=[]

for i in a:

tmp=[]

for k in b:

if k<i:

if not i%k:

tmp.append(k)

else:

continue

else:

break

count=0

for m in tmp:

count=count+m

if count==i:

result.append(i)

else:

continue

print(result)

❹ python 8个完数 运算超时

在你的这个思路中,可以优化的主要就是几方面:

1:求因数可以仅算到n的平方根q为止,对于n,每有一个小于q的因数,就有一个对应的大于q的因数,两者之积为n。

2:在完数函数中已经完成了求因数的工作,不需要另做一次,直接在完数函数中拼装结果即可。

3:目前来说,已知的完全数都是偶数,因此,最后那行那里可以做num+=2优化,但数学上目前还没有证明不存在奇完全数,这种做法从理论上来说是不严谨的。


实际上,当一个数比较大的时候,做因数分解是一个很费时的工作,要找更大的完数,需要更好的因数分解的方式。比如先求出所有的质因数,在使用这些质因数的组合来寻找非质因数。因为质因数必然是在质数表中,而质数表可以建立一次然后重复使用,相对一个个的试商就快得多了。

如果要进一步优化以寻找更大的完全数,那么,就需要利用更多的关于完全数的规律了,比如,除6以外,其它的完全数都是9n+1,都是p^2*q……,这些优化在你这个框架下实现就比较麻烦。

总体来说,不解决因数分解的问题,主要就是上述三种优化了。

❺ Python 输出完数

//仅供参考

❻ python显示输入数字之内的完全数

所谓完全数是指,如果一个数恰好等于它的因子之和,则称该数为“完全数”,又称完美数或完备数。
例如:第一个完全数是6,它有约数 1、 2、 3、 6,除去它本身6外,其余3 个数相加,1+2+3=6。 第二个完全数是28,它有约数 1、 2、 4、 7、 14、 28,除去它本身28外,其余5个数相加,1+2+4+7+14=28

#!/usr/bin/env python3
# -*- coding: utf-8 -*-


a = []
for i in range(1, 1000):
s = 0
for j in range(1, i):
if i % j == 0 and j < i:
s += j
if s == i:
print(i)
a.append(i)
print("1000以内的完全数为: %s" % a)

运行结果如图所示

❼ 用python语言编程完数就找1到1000怎么做

#include<stdio.h>
int main()
{
int i,j,s;
for(i=2;i<=1000;i++)
{
s=1;
for(j=2;j<=i/2;j++)
if(i%j==0)s+=j;
if(s==i)printf("%d\n",i);
}
getch();
return 0;
}

❽ python编程 找完数

#!/usr/bin/envpython3.6

defyinzi(n):
return[iforiinrange(1,n)ifn%i==0]

defis_wanshu(n,yz=None):
yz=yzoryinzi(n)
returnsum(yz)==n

defmain():
m,n=input('Entertwointegers:').split()
foriinrange(int(m),int(n)+1):
yz=yinzi(i)
ifis_wanshu(i,yz):
print(f'{i}={"+".join(str(j)forjinyz)}')

if__name__=='__main__':
main()

❾ 例用python:一个整数如果恰好等于它的因子之和,这个整数就称为“完数”。例如6=1+2+3.

1、首先在python软件中,建立一个简单的递增整数字典序列,如下图所示。

热点内容
我的世界工艺服务器传送点怎么搞 发布:2024-12-22 10:56:30 浏览:908
exprlinux 发布:2024-12-22 10:55:19 浏览:697
你知道甲鱼密码是多少吗 发布:2024-12-22 10:26:32 浏览:812
我的世界国服服务器开服 发布:2024-12-22 10:09:55 浏览:543
标题编译策略 发布:2024-12-22 10:04:45 浏览:222
android开发xml 发布:2024-12-22 10:00:20 浏览:64
sql服务器名称什么时候能写ip 发布:2024-12-22 09:53:19 浏览:129
域控制服务器怎么设置ip 发布:2024-12-22 09:43:23 浏览:883
csvreaderpython 发布:2024-12-22 09:43:13 浏览:769
linux更改用户 发布:2024-12-22 09:35:19 浏览:506