国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網 會員登陸 & 注冊

Python編程算法【二十五】 親密數

2022-11-15 21:06 作者:SPC編程愛好者  | 我要投稿

【案例內容】?

如果整數A的全部因子(包括1,不包括A本身)之和等于B,且整數B的全部因子(包括1,不包括B本身)之和等于A,則將整數A和B稱為親密數。求3000以內的全部親密數。


【解題思路】

可以先定義一個函數,專門用來處理各因子之和。步驟是先通過計算得到某個數的所有因子,然后將各個因子放入一個列表中,最后通過sum函數,即可求得各因子之和,并把最終的總和作為函數的返回值。需注意的是,如果因子數只有一個,那么是不符合題意的,這時函數的返回值可以直接設為0。

接著再設置兩個列表,分別用作存儲所有的親密數,以及去掉重復的親密數。比如220和284是一對親密數,可經過程序運行后,就會找到兩組親密數:220和284,以及284和220,其實它們就是同一組的親密數,因此需要把重復的親密數去掉。這時可以利用集合,因為集合是無序的,也就是{220, 284}與{284, 220}是視為相同的,那么我們就可以通過循環(huán),把不相同的親密數放入到一個新列表中,從而達到去重的效果。最后再分別讀取集合中的兩個數即可。

另外,根據題意,因子是包括1,不包括該數本身,所以循環(huán)的范圍可以設定為4-3001,因為1、2、3的因子除了1,就是自己本身,可以直接去掉這三個數。


【Python代碼】

程序運行后,得到三組親密數:220 和 284,1184 和 1210,2924 和 2620

本題在找到親密數后,應該把找到的親密數放入集合中,而不是放入列表中。因為列表是有序的,也就是 [220, 284] 與 [284, 220] 在Python中會被當成兩個不同的列表,它們順序不同。因此在去重時,就會當成不重復的兩組親密數,而實際上它們就是一組親密數



Python編程算法【二十五】 親密數的評論 (共 條)

分享到微博請遵守國家法律
呼和浩特市| 灵宝市| 恭城| 土默特左旗| 乐平市| 偏关县| 墨脱县| 西乌| 新田县| 丰台区| 靖江市| 湾仔区| 山东省| 思南县| 玛沁县| 望都县| 宜城市| 新龙县| 格尔木市| 遂川县| 景谷| 资溪县| 邻水| 观塘区| 莱西市| 沁水县| 潍坊市| 万州区| 牙克石市| 鲁甸县| 滨海县| 淄博市| 鹤壁市| 新乐市| 辉县市| 大悟县| 观塘区| 高雄县| 永安市| 桂平市| 罗城|