python完數
❶ 找出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軟體中,建立一個簡單的遞增整數字典序列,如下圖所示。