最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

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編程算法【二十五】 親密數的評論 (共 條)

分享到微博請遵守國家法律
道真| 札达县| 出国| 绵竹市| 远安县| 句容市| 隆德县| 罗田县| 颍上县| 台南县| 化德县| 长岛县| 印江| 明光市| 格尔木市| 崇义县| 三原县| 宁化县| 大田县| 新兴县| 汕头市| 武乡县| 宁海县| 乐东| 玛沁县| 新沂市| 鸡东县| 罗江县| 镇雄县| 红桥区| 衡东县| 三台县| 无棣县| 恩平市| 雷山县| 石门县| 景洪市| 霍山县| 手游| 永州市| 平顶山市|