當前位置:首頁 » 編程語言 » 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軟體中,建立一個簡單的遞增整數字典序列,如下圖所示。

熱點內容
編程器解讀 發布:2025-07-03 03:22:49 瀏覽:23
中國電信加密通信業務 發布:2025-07-03 03:06:00 瀏覽:520
腳本家的台詞 發布:2025-07-03 03:05:50 瀏覽:708
arcgisforpython 發布:2025-07-03 03:05:46 瀏覽:898
期計演算法 發布:2025-07-03 02:56:53 瀏覽:404
不同域訪問 發布:2025-07-03 02:49:05 瀏覽:818
多槽編程 發布:2025-07-03 02:47:42 瀏覽:919
sql2008錯誤233 發布:2025-07-03 02:28:52 瀏覽:168
創建資料庫語句mysql 發布:2025-07-03 02:14:34 瀏覽:146
python量化投資 發布:2025-07-03 02:05:11 瀏覽:804