如果一個(gè) 3 位數(shù)等于其各位數(shù)字的立方和,則稱這個(gè)數(shù)為水仙花數(shù)。
創(chuàng)新互聯(lián)專注于大足企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),商城網(wǎng)站制作。大足網(wǎng)站建設(shè)公司,為大足等地區(qū)提供建站服務(wù)。全流程按需設(shè)計(jì)網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一個(gè)水仙花數(shù)
請(qǐng)按照從小到大的順序輸出 1000 以內(nèi)的水仙花數(shù)(3位數(shù)),并用"逗號(hào)"分隔輸出結(jié)果
以下程序簡(jiǎn)單實(shí)現(xiàn)了自定義輸入范圍,并返回結(jié)果集
n?=?input('請(qǐng)輸入要求的范圍:')
d?=?{}
for?i?in?range(1,len(n)):
d['%d位數(shù)的水仙花數(shù)'?%i]?=?[]
for?i?in?range(1,int(n)):
sum?=?0
s?=?list(str(i))
for?j?in?s:
j?=?int(j)
sum?=?sum?+?j**len(str(i))
if?sum?==?i:
d['%d位數(shù)的水仙花數(shù)'?%len(str(i))].append(i)
print(d)
'''
執(zhí)行結(jié)果:
請(qǐng)輸入要求的范圍:1000
{'1位數(shù)的水仙花數(shù)':?[1,?2,?3,?4,?5,?6,?7,?8,?9],?'2位數(shù)的水仙花數(shù)':?[],?'3位數(shù)的水仙花數(shù)':?[153,?370,?371,?407]}
'''
答: 對(duì)于這題,首先要明白水仙花數(shù)的概念,它首先是一個(gè)三位數(shù),其次個(gè)位、十位和百位的三次冪相加之和等于它本身。因此根據(jù)這個(gè)思路編寫以下代碼。
對(duì)應(yīng)的運(yùn)行結(jié)果如下所示。注意水仙花數(shù)只有4個(gè)。
如下即是:
def demo():?temp = [],for i in range(100, 1000): a = i // 100 # 百位, b = i // 10 % 10 # 十位,c = i % 10 # 個(gè)位, if a ** 3 + b ** 3 + c ** 3 == i,temp.append(str(i)),return,join(temp),print("1000以內(nèi)的水仙花數(shù)有:{}".format(demo()))。
編程是編定程序的中文簡(jiǎn)稱,就是讓計(jì)算機(jī)代碼解決某個(gè)問題,對(duì)某個(gè)計(jì)算體系規(guī)定一定的運(yùn)算方式,使計(jì)算體系按照該計(jì)算方式運(yùn)行,并最終得到相應(yīng)結(jié)果的過程。
為了使計(jì)算機(jī)能夠理解人的意圖,人類就必須將需解決的問題的思路、方法和手段通過計(jì)算機(jī)能夠理解的形式告訴計(jì)算機(jī),使得計(jì)算機(jī)能夠根據(jù)人的指令一步一步去工作,完成某種特定的任務(wù)。這種人和計(jì)算體系之間交流的過程就是編程。
編程:設(shè)計(jì)具備邏輯流動(dòng)作用的一種“可控體系”,注:編程不一定是針對(duì)計(jì)算機(jī)程序而言的,針對(duì)具備邏輯計(jì)算力的體系,都可以算編程。
答: 首先要明白水仙花數(shù)的定義,它是指一個(gè)三位數(shù),它的每個(gè)位上的數(shù)字的三次冪之和等于它本身。所以問題就轉(zhuǎn)化為我們?nèi)绾螌⑷粩?shù)的個(gè)位、十位和百位都表示出來。然后再遍歷100~999的每一個(gè)數(shù)字去判斷其是否為水仙花數(shù)。具體代碼如下所示。
最終的運(yùn)行結(jié)果如下,水仙花數(shù)總共有4個(gè),具體如圖片所示。
def demo():
temp = []
for i in range(100, 1000):
? a = i // 100 # 百位
? b = i // 10 % 10 # 十位
? c = i % 10 # 個(gè)位
? if a ** 3 + b ** 3 + c ** 3 == i:
? ? ? temp.append(str(i))
return ",".join(temp)
print("1000以內(nèi)的水仙花數(shù)有:{}".format(demo()))
用C語言實(shí)現(xiàn)水仙花數(shù):
#include stdio.h
#include stdlib.h
int main()
{
int i,j,k,n;
printf("'water flower'number is:");
for(n=100;n1000;n++)
{
? i=n/100;/*分解出百位*/
? j=n/10%10;/*分解出十位*/
? k=n%10;/*分解出個(gè)位*/
? if(n==i*i*i+j*j*j+k*k*k)
? {
? ? ? printf("%-5d",n);
? }
}
printf("\n");
return 0;
}