Jika setiap digit nombor dinaikkan kepada kuasa jumlah bilangan digit dan kemudian bahagian kecil ditambah dan hasilnya sama dengan nombor itu, nombor itu dipanggil nombor Armstrong. Dalam contoh Python ini, kaedah untuk mencari jumlah n-digit nombor Armstrong diberikan menggunakan dua contoh berbeza. Dalam Contoh 1, kaedah untuk mengira jumlah semua nombor Armstrong 3 digit diberikan. Dalam Contoh 2, pengguna boleh menentukan bilangan bit pada masa jalan. Program menguji menggunakan nombor 4 hingga 6 digit.
Langkah 1 - Dapatkan senarai ketiga-tiga digit. Panggil senarai ini listofallNums.
Langkah 2 - Buat fungsi yang mengembalikan jumlah semua nombor yang dinaikkan kepada kuasa ke-3 nombor jika jumlah yang dikira sama dengan nombor itu sendiri, jika tidak ia mengembalikan -1.
Langkah 3 − Untuk semua nombor dalam listofArmStrNums, panggil fungsi di atas dan jika nilainya bukan -1, tambahkannya pada senarai bernama listofArmStrNums.
Langkah 4 - Sahkan bahawa semua nombor dalam senarai ArmStrNums ialah nombor armStrong 3 digit. Sekarang tambahkan kesemua 3 digit nombor ArmStrong ini bersama-sama.
Langkah 5 - Jalankan program dan semak hasilnya.
numOfDigits=3 listofallNums=[] listofArmStrNums=[] listofsumparts=[] def isArmStr(num, powof): sum = 0 TNum = num while TNum > 0: digitt = TNum % 10 sum += digitt ** powof TNum = TNum//10 if sum==num: print('This is an Armstrong number', num) return sum else: return -1 lowerNum=10**(numOfDigits-1) highNum=10**(numOfDigits) for item in range(lowerNum, highNum): listofallNums.append(item) lastelem=len(listofallNums)-1 print("listofallNums contains numbers from ",listofallNums[0], " to ", listofallNums[lastelem]) for itemn in listofallNums: if(isArmStr(itemn, numOfDigits) != -1): listofArmStrNums.append(itemn) print("List of ArmStrong Numbers: ", listofArmStrNums) for elem in listofArmStrNums: listofsumparts=[] summ=0 while elem > 0: digittt = elem % 10 listofsumparts.append(digittt ** numOfDigits) elem = elem//10 print(listofsumparts) total=0 print("adding together: ") for ele in range(0,len(listofsumparts)): total = total + listofsumparts[ele] print(total) SumofallArmStrongnumbers=0 for element in listofArmStrNums: SumofallArmStrongnumbers = SumofallArmStrongnumbers + element print("Sum of all 3 digit ArmStrong numbers is ", SumofallArmStrongnumbers )
Untuk melihat hasilnya, jalankan fail Python dalam tetingkap baris arahan.
rreeeeRajah 1: Memaparkan keputusan dalam tetingkap arahan.
Langkah 1 - Masukkan nilai N nombor dan dapatkan senarai semua nombor N-digit. Panggil senarai ini listofallNums.
Langkah 2 - Buat fungsi yang mengembalikan jumlah semua nombor yang dinaikkan kepada kuasa N jika jumlah yang dikira adalah sama dengan nombor itu sendiri, jika tidak ia mengembalikan -1.
Langkah 3 − Untuk semua nombor dalam listofArmStrNums, panggil fungsi di atas dan jika nilainya bukan -1, tambahkannya pada senarai bernama listofArmStrNums.
Langkah 4 − Sahkan sama ada semua nombor dalam senaraiArmStrNums ialah nombor Armstrong N-digit. Sekarang tambah semua nombor Armstrong N-digit ini.
Langkah 5 - Jalankan program dan semak sama ada terdapat nombor 4 dan 5 digit dalam keputusan.
listofallNums contains numbers from 100 to 999 This is an Armstrong number 153 This is an Armstrong number 370 This is an Armstrong number 371 This is an Armstrong number 407 List of ArmStrong Numbers: [153, 370, 371, 407] [27, 125, 1] adding together: 153 [0, 343, 27] adding together: 370 [1, 343, 27] adding together: 371 [343, 0, 64] adding together: 407 Sum of all 3 digit ArmStrong numbers is 1301
Buka tetingkap cmd dan jalankan fail python untuk melihat hasilnya.
numOfDigits = 5 listofallNums=[] listofArmStrNums=[] listofsumparts=[] def isArmStr(num, powof): sum = 0 TNum = num while TNum > 0: digitt = TNum % 10 sum += digitt ** powof TNum = TNum//10 if sum==num: print('This is an Armstrong number', num) return sum else: return -1 lowerNum=10**(numOfDigits-1) highNum=10**(numOfDigits) for item in range(lowerNum, highNum): listofallNums.append(item) lastelem=len(listofallNums)-1 print("listofallNums contains numbers from ",listofallNums[0], " to ", listofallNums[lastelem]) for itemn in listofallNums: if(isArmStr(itemn, numOfDigits) != -1): listofArmStrNums.append(itemn) print("List of ArmStrong Numbers: ", listofArmStrNums) for elem in listofArmStrNums: listofsumparts=[] summ=0 while elem > 0: digittt = elem % 10 listofsumparts.append(digittt ** numOfDigits) elem = elem//10 print("list of sum subparts: ", listofsumparts) total=0 print("adding together: ") for ele in range(0,len(listofsumparts)): total = total + listofsumparts[ele] print(total) SumofallArmStrongnumbers=0 for element in listofArmStrNums: SumofallArmStrongnumbers = SumofallArmStrongnumbers + element print("Sum of all ", numOfDigits, " digit ArmStrong numbers is ", SumofallArmStrongnumbers )
Rajah 2: Menunjukkan jumlah dan n-digit nombor Armstrong.
Dalam artikel Python ini, kaedah mencari jumlah n-digit nombor Armstrong diberikan menggunakan dua contoh berbeza. Dalam Contoh 1, kaedah diberikan untuk mengira jumlah semua nombor Armstrong 3 digit. Dalam Contoh 2, pengguna boleh menentukan bilangan digit pada masa jalan. Jika pengguna memasukkan 4, maka semua nombor Armstrong 4 digit dan jumlahnya diberikan.
Atas ialah kandungan terperinci Program Python untuk mendapatkan jumlah nombor N Armstrong. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!