描述:
乙個數如果恰好等於不包含它本身所有因子之和,這個數就稱為"完數"。 例如,6的因子為1、2、3,而6=1+2+3,因此6是"完數"。 程式設計序找出n之內的所有完數,並按下面格式輸出其因子分析:
第一次:超時50%。**:使用雙重迴圈,第二層迴圈到當前第一層i值的i/2,這樣每次將i%j==0的值加入列表,最終列表即是順序的因子,計算因子和==當前值決定是否輸出。
第二次:正確。
與第一次相比,這次迴圈到math.sqrt(i),大大減少運算量,當i%j==0是,j是因子,同理i/j也是因子,同時加入列表,最後需要list.sort()排序,再 計算因子和==當前值決定是否輸出。需要注意的是本題中i/j都是4.0,5.0故要int(i/j),其次列表最後一定是本身,所以輸出時要剔除最後乙個值(最大值)
import math
n=int(input())
for i in range(5,n):
fac=
for j in range(1,int(math.sqrt(i))+1):
if i%j==0:
fac.extend([j,int(i/j)])
if sum(fac)-i==i:
print(i,end=' ')
fac.sort()
for k in fac[:-1]:
print(k,end=' ')
print()
補充:2020/1/19bug:沒有考慮到例如25=5*5,用上述**就會產生[1,25,5,5]的因子列表
輸出n以內所有的素數
目錄描述輸出n以內所有的素數。保證 n 是100以內的整數。樣例輸入 5 輸出 2,3,5 方法一 include include include using namespace std 判斷乙個整數是否為素數 bool isprime int n int num sqrt n 從 2,sqrt n...
輸出n以內的所有素數(質數)
素數 質數 除能被自己和1整除,不能被其他數整除的數叫素數,1和0既非素數也非合數。素數一定是不能整除2和3,但不能整除2和3的不一定是素數如35和49 def odd iter n liste i for i in range 2,n 1 k 0while k思路分析 1 先生成3開頭的奇數,因為...
計算整數N 以內所有素數 埃拉託色尼篩法
問題 給定正整數n n 1 求n以內所有素數 埃拉託色尼篩法利用合數質因數分解原理,首先將所有數假設為素數,標為1,然後,將已知素數的倍數 非素數 標記為0,最後,所有標為1的數即為素數。如下 include include int main int argc,char argv int i 0,j...