如果一個數(shù)恰好等于它的真因子之和,則稱該數(shù)為“完全數(shù)”?[2]??。各個小于它的約數(shù)(真約數(shù),列出某數(shù)的約數(shù),去掉該數(shù)本身,剩下的就是它的真約數(shù))的和等于它本身的自然數(shù)叫做完全數(shù)(Perfect number),又稱完美數(shù)或完備數(shù)。
公司主營業(yè)務(wù):網(wǎng)站建設(shè)、成都網(wǎng)站制作、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出東昌府免費做網(wǎng)站回饋大家。
例如:第一個完全數(shù)是6,它有約數(shù)1、2、3、6,除去它本身6外,其余3個數(shù)相加,1+2+3=6。第二個完全數(shù)是28,它有約數(shù)1、2、4、7、14、28,除去它本身28外,其余5個數(shù)相加,1+2+4+7+14=28。第三個完全數(shù)是496,有約數(shù)1、2、4、8、16、31、62、124、248、496,除去其本身496外,其余9個數(shù)相加,1+2+4+8+16+31+62+124+248=496。后面的完全數(shù)還有8128、33550336等等。
結(jié)果是
#include stdio.hint fun(int n) /*函數(shù)用來判斷一個數(shù)是否是完全數(shù).是就返回1. 不是返回0*/
{
int i,sum = 0;
for(i=1;in;i++)
{
if(n % i == 0) //如果i是n的因子. 就將i累加到sum中.
sum = sum + i;
}
if(sum == n) //判斷n和sum是否相等.如果相等就說明這個數(shù)是完全數(shù).返回1.
return 1;
return 0; //否則返回0;
}int main()
{
int i,t;
/*輸入一個整數(shù),判斷這個數(shù)是否是完全數(shù)*/
scanf("%d", t);
if( fun( t ) )
printf( "Yes\n" );
else
printf( "No\n" );/*輸出1000以內(nèi)所有完全數(shù)*/
for(i = 1; i = 1000; i++)
{
if( fun( i ) )
printf("%d\t",i);
}
printf("\n");
return 0;
}
1、打開pycharm,點擊file,點擊new,新建一個空白的pyrthon文件:
2、這里開始編寫判斷素數(shù)的代碼,判斷素數(shù)的上限最準(zhǔn)確的應(yīng)該使用平方根取整加一,此處用到兩層循環(huán),第一層遍歷0到100的數(shù),第二層循環(huán)判斷滿足條件的素數(shù)。這里有一個else要注意是和for對齊而不是if對齊,如果和if對齊只要不能被2整除就會被添加到列表中了,而且會多次添加:
3、右鍵點擊鼠標(biāo),點擊“run?demo”,運行編寫好的python文件,在下方的控制臺就可以看見輸出后結(jié)果:
在你的這個思路中,可以優(yōu)化的主要就是幾方面:
1:求因數(shù)可以僅算到n的平方根q為止,對于n,每有一個小于q的因數(shù),就有一個對應(yīng)的大于q的因數(shù),兩者之積為n。
2:在完數(shù)函數(shù)中已經(jīng)完成了求因數(shù)的工作,不需要另做一次,直接在完數(shù)函數(shù)中拼裝結(jié)果即可。
3:目前來說,已知的完全數(shù)都是偶數(shù),因此,最后那行那里可以做num+=2優(yōu)化,但數(shù)學(xué)上目前還沒有證明不存在奇完全數(shù),這種做法從理論上來說是不嚴(yán)謹(jǐn)?shù)摹?/p>
實際上,當(dāng)一個數(shù)比較大的時候,做因數(shù)分解是一個很費時的工作,要找更大的完數(shù),需要更好的因數(shù)分解的方式。比如先求出所有的質(zhì)因數(shù),在使用這些質(zhì)因數(shù)的組合來尋找非質(zhì)因數(shù)。因為質(zhì)因數(shù)必然是在質(zhì)數(shù)表中,而質(zhì)數(shù)表可以建立一次然后重復(fù)使用,相對一個個的試商就快得多了。
如果要進一步優(yōu)化以尋找更大的完全數(shù),那么,就需要利用更多的關(guān)于完全數(shù)的規(guī)律了,比如,除6以外,其它的完全數(shù)都是9n+1,都是p^2*q……,這些優(yōu)化在你這個框架下實現(xiàn)就比較麻煩。
總體來說,不解決因數(shù)分解的問題,主要就是上述三種優(yōu)化了。
import sys
theNum = input('請輸入一個數(shù):')
try:
theNum = int(theNum)
except ValueError:
print("請輸入一個整數(shù)!")
sys.exit()
# 因子
divisor = 1
# 因子的和
divisors = 0
# 求因子的和
while divisor theNum:
if theNum % divisor == 0:
divisors += divisor
divisor += 1
if divisors == theNum:
print("{} 是完全數(shù)!\n".format(theNum))
else:
if divisors theNum:
print("{0} 是豐沛數(shù)!\n".format(theNum))
else:
print("{0} 是不足數(shù)!\n".format(theNum))
分享文章:python函數(shù)完數(shù)判斷,判斷完數(shù)Python
鏈接分享:http://aaarwkj.com/article34/hsoese.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、品牌網(wǎng)站制作、面包屑導(dǎo)航、定制開發(fā)、網(wǎng)站策劃、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)