導航:首頁 > 編程語言 > python判斷完數

python判斷完數

發布時間:2025-03-31 20:22:21

python編寫函數,實現判斷正整數n是否是完數。若是,函數返回True,否則返回Flase

在Python中,編寫函數來判斷一個正整數n是否為完數是一個有趣的練習。完全數是一種特殊的自然數,它等於其所有真因子(除了自身)之和。例如,6是一個完全數,因為它的因子有1、2和3,而1+2+3=6。下面的代碼展示了如何編寫這樣一個函數。

首先,我們需要定義一個函數,該函數接受一個正整數n作為參數。函數的主要任務是找到n的所有真因子,並檢查這些因子的和是否等於n。

下面是一個Python代碼示例:

python
def is_perfect_number(n):
if n <= 1:
return False
sum = 0
for i in range(1, n):
if n % i == 0:
sum += i
return sum == n

在這個函數中,我們首先檢查n是否小於或等於1,因為1不是完全數。然後,我們初始化一個變數sum來存儲n的所有真因子之和。接下來,我們使用一個for循環來遍歷從1到n-1的所有數,檢查它們是否是n的因子。如果是,則將它們累加到sum中。最後,我們檢查sum是否等於n,如果是,則返回True,表示n是完全數;否則返回False。

為了確保這個函數的正確性,可以編寫一些測試用例來驗證它的功能。例如:

python
print(is_perfect_number(6)) # 應該輸出True
print(is_perfect_number(28)) # 應該輸出True
print(is_perfect_number(12)) # 應該輸出False

通過這種方式,我們可以輕松地判斷一個正整數是否為完全數。

⑵ 完全數的計算方法

大數學家歐拉曾推算出完全數的獲得公式:如果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是完全數。
但是2^p-1什麼條件下才是質數呢?
事實上,當2^p-1是質數的時候,稱其為梅森素數。到悉搭2013年2月6日為止,人類只發現了48個梅森素數,較小的有3、7、31、127等。 1.PASCAL程序 判斷 A~ B 區域仔知內的完全數為
program wanquanshu;
var i,a,b:longint;
function wanquanshu(i:longint):boolean;
var sum,k:longint;
begin
sum:=1;
for k:= 2 to i div 2 do
if i mod k=0 then sum:=sum+k;
if i=sum then wanquanshu:= true
else wanquanshu:=false;
end;
begin
repeat
readln(a,b);
until (a>0) and (b>0) and (b>a);
for i:= a to b do
if wanquanshu(i) then writeln(i);
end.
2.利用FreeBasic編程求n以內完全數
DIM AS INTEGER I,J,S
FOR I=1 TO 10000
S=0
FOR J=1 TO I2
IF I MOD J=0 THEN S=S+J
NEXT J
IF S=I THEN PRINT I,
NEXT I
SLEEP
END
3.利用pascal編程求n以內完全數
program bill02;
var m,n,y,i,j,s,ss,z:longint;
a:array[1..10000] of integer;
begin
readln(m,n);
for i:=m to n do
begin
z:=0;
fillchar(a,sizeof(a),0);
s:=2;
ss:=1;
y:=i;
while y<>0 do
begin
if y mod s=0 then
begin
ss:=ss+1;
a[ss]:=s;
y:=y div s;
end
else
s:=s+1;
end;
for j:=1 to ss do
z:=z+a[j];
if z=i then writeln(i);
end;
end.
4.利用VB編程求10000以內完全數
Dim a as Integer,b as Integer,c as Integer
For a = 1 To 10000
c = 0
For b = 1 To a 2
If a Mod b = 0 Then c = c + b
Next b
If a = c Then Print Str(a)
Next a
5.利用C語言編程求1000以內完全數
#include stdio.h
void main()
{
int j,k,sum = 0;
for(k=2;k<=1000;k++)
{
sum=0;
for(j=1;j<k;j++)
if(k%j==0)
sum=sum+j;
if(sum==k)
printf(%d ,k);
}
}
6.利用java語言編程求1000以內完全數
public class PerfectNumber {
public static void main(String[] args){
for(int i=2;i<1000;i++){
int sum=0;
//查找因數
for(int j=1;j<i;j++){
if(i % j==0){
sum += j;
}
if(sum==i)
System.out.println(i);
}
}
}
7.利用python語言編程求N以內完全數
def perfect(N):
各個真約數的和等於它本身的自然數叫做完全數(Perfect number),又稱完美數或完備數。

perfectNumber=[]
for i in range(5,N):
sum1 = 0
for j in range(1,i//2+1):
if i%j == 0:
sum1 += j
if sum1 == i:
perfectNumber.append(i)
return perfectNumber
8.利用c++語言編程求1000以內完全數
#include <iostream>using namespace std;int main (){ int i,j,m;for(i=1;i<=1000;i++){for(j=1,m=0;j<i;j++){while(i%j==0){m=m+j;break;}}if(i==m){cout<<i<< <<its factors are ;for(j=1;j<m;j++){while(m%j==0){cout<<j<<',';break;}}cout<<endl;}}}
9.利用JavaScript語言編程求N以內完全數
function perfectNumber(N){
var nums = [], sum, i, j;
//0除以任意數都是0,所以從1開始
for (i = 0; i <= N; i++){
sum = 0
//完全數除以自己一半,求余肯定會大於0,所以用i/2
for(j = 1; j <= i/2; j++){
if (i % j === 0){
sum += j;
}
}
if (sum === i){
nums.push(i);
}
}
return nums;
}
10.c#/*完美數推算*/int 因子和 = 0;foreach (var 自然數 in Enumerable.Range(2, 10000)){因子和 = 0;foreach (var 真約數 in Enumerable.Range(1, 自然數 - 1))if (自然數 % 真約數 == 0) 因子和 += 真約數;if (因子和 == 自然數)Console.WriteLine(自然數);}

⑶ 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是完全數。

⑷ 鍋囨湡鏈鍏≒ython緇忓吀綆楁硶鍚堥泦

鍙蹭笂鏈鍏ㄧ殑python 緇忓吀綆楁硶鍚堥泦


鍙蹭笂鏈鍏ㄧ殑python緇忓吀綆楁硶鍚堥泦

綆楁硶鏄鎸囪В棰樻柟妗堢殑鍑嗙『鑰屽畬鏁寸殑鎻忚堪錛屾槸涓緋誨垪瑙e喅闂棰樼殑

娓呮櫚鎸囦護錛岀畻娉曚唬琛ㄧ潃鐢ㄧ郴緇熺殑鏂規硶鎻忚堪瑙e喅闂棰樼殑絳栫暐鏈哄埗

濡傛灉瑕佹垚涓轟竴涓鏈変竴瀹氭按騫崇殑紼嬪簭鍛橈紝綆楁硶鏄蹇呴』瑕佷細鐨勩傜畻

娉曪紝璁╀綘鐨勭▼搴忓彉寰楁洿鏈夌伒姘斻

鏁版嵁緇撴瀯涓庣畻娉曟槸鎵鏈変漢閮借佸︿範鐨勫熀紜璇劇▼錛岃嚜宸卞啓綆楁硶鐨

榪囩▼鍙浠ュ府鍔╂垜浠鏇村ソ鍦扮悊瑙g畻娉曟濊礬錛屼笉瑕佽交瑙嗘瘡涓涓綆楁硶

涓浜涜櫧鐒剁湅浼煎規槗錛屼絾鍙鑳芥湁寰堝氬潙銆備絾鏄鍧戣繕鏄瑕佽嚜宸變竴

涓涓涓韙╄繃鏉ョ殑錛岃屼笖涔熷彧鏈夎嚜宸辮俯榪囧潙錛屾墠鑳借╄嚜宸變粠鐞嗚

鍒版妧鑳介兘寰楀埌鎻愬崌銆

涓轟簡甯鍔╁ぇ瀹舵彁楂樺︿範鏁堢巼錛 榪涢樁Python鎶鑳斤紝 涓哄ぇ瀹舵帹鑽愪簡

涓浠界敤Python浠g爜瀹炵幇綆楁硶鐨勭粡鍏稿悎闆

灝嗘暟緇勪腑鐨勫厓緔犱緷嬈″墠縐

奼俵ist鐨勫鉤鍧囧垎騫舵帓搴

鐢ㄩ樋鎷変集涔樻硶瑙e喅澶ф暣鏁扮浉涔橀棶棰

浜屽垎鏌ユ壘鐨刾ython妯″潡

浜屽弶鏍戞煡鎵句箣鍩烘湰鎬濇兂

浜屽弶鏍戞煡鎵句箣python妯″潡

浜屽弶鏍戜箣閫掑綊鏂規硶閬嶅巻

鍙蹭笂鏈鍏ㄧ殑python緇忓吀綆楁硶鍚堥泦

鍏戞崲紜甯侀棶棰樹箣璐濠綆楁硶瑙e喅

緔㈠紩鏌ユ壘姒傝堪

緔㈠紩鏌ユ壘涔媁hoosh浣跨敤璇﹁В

Whoosh涔嬩腑鏂囧垎璇嶅叏鏂囨煡鎵

鍒犻櫎涓涓瀛楃︿覆涓榪炵畫涓嬈′互涓婂嚭鐜扮殑絀烘牸

鏈鐭璺寰勯棶棰樼殑Dijkstra綆楁硶

瀹炵幇鏍規嵁瑕佹眰淇濈暀灝忔暟浣嶆暟鐨勯櫎娉曟ā鍧

鏁存暟list錛 灝嗗伓鏁版斁鍒板墠闈錛 濂囨暟鏀懼埌鍚庨潰

鏂愭嘗閭e戞暟鍒楃殑澶氱嶅疄鐜版柟寮

鎶樺崐鏌ヨ㈡煡鎵緇ist涓鏌愬厓緔犱綅緗

鎺掑簭涔嬬敤python鍫唄eap q妯″潡

鎺掑簭涔嬪綊騫舵柟娉

鎺掑簭涔媓eap q妯″潡璇﹁В

鎺掑簭涔媝ython sorted鎬ц兘鍒嗘瀽

鎺掑簭涔嬪揩閫熸帓搴忕畻娉

鍙蹭笂鏈鍏ㄧ殑python緇忓吀綆楁硶鍚堥泦

鎺掑簭綆楁硶鐨勬瘮杈冨拰閫夋嫨

鎸夌収鎸囧畾瀛楁瘝欏哄簭鎺掑簭

灝嗕竴涓鏁存暟鍒嗘媶涓鴻嫢騫叉暣鏁板拰

鍒ゆ柇涓涓鏁版槸鍚︿負緔犳暟鐨勫氱嶆柟娉

灝唋ist涓鐨勬暟瀛楃粍鍚堟垚鏈灝忕殑鏁存暟

鏃犲悜鍥炬渶灝忕敓鎴愭爲Kruskal綆楁硶

鏃犲悜鍥炬渶灝忕敓鎴愭爲鐨凱rim綆楁硶

LUA鎸夌収鎸囧畾瀛楃﹀垎鍓插瓧絎︿覆

鏌ユ壘瀛楃︿覆涓鍑虹幇鏈澶氱殑瀛楃﹀拰涓鏁

list涓鏁板瓧鐨勫拰銆佹渶鍊箋佸潎鍊

瀵繪壘瀹屽叏鏁

璁$畻浣欐暟

鍒犻櫎list涓鐨勯噸澶嶅厓緔

灝嗗瓧絎︿覆鍐欐垚椹煎嘲鏍峰紡

涔濆鏍奸棶棰





⑸ 用Python編寫程序,從鍵盤輸入一個整數並判斷該數的類別:其因數之和等於數字本身的數稱為完全數

import sys
theNum = input('請輸入一個數:')
try:
theNum = int(theNum)
except ValueError:
print("請輸入一個整數!")
sys.exit()
# 因子
divisor = 1
# 因子的和
divisors = 0

# 求因子的和
while divisor < theNum:
if theNum % divisor == 0:
divisors += divisor
divisor += 1
if divisors == theNum:

print("{} 是完全數!\n".format(theNum))
else:
if divisors > theNum:
print("{0} 是豐沛數!\n".format(theNum))
else:
print("{0} 是不足數!\n".format(theNum))

閱讀全文

與python判斷完數相關的資料

熱點內容
為什麼要編譯源代碼 瀏覽:819
輸入法freetype交叉編譯 瀏覽:437
電阻單片機代號 瀏覽:469
來畫app怎麼添加對話框 瀏覽:318
python序列化分布式 瀏覽:107
域名伺服器是什麼形式 瀏覽:681
rsa加密解密速度快 瀏覽:924
mac電腦如何單片機開發 瀏覽:547
紀念日app怎麼用小插件 瀏覽:331
如何更改安卓手機所在地區 瀏覽:217
程序員負債120萬 瀏覽:80
階層pdf 瀏覽:380
linuxgit安裝配置 瀏覽:319
用源碼搭建app要改什麼 瀏覽:42
密碼學教程pdf 瀏覽:3
亞馬遜做的加密貨幣 瀏覽:81
怎麼搭建雲播伺服器 瀏覽:867
網站客服機器人源碼 瀏覽:317
2021程序員的出路 瀏覽:547
發行與承銷pdf 瀏覽:945