問題源某群一討論:10億以內的數與98754互為質數的正整數之和
思路:
1. 先求出98754的約數,並將其放入列表中;
2. 從1至10億的自然數,遍歷98754公約數列表求余。如果遍歷完約數列表且余數都不為0,則認為與98754互為質數,並求和;
Python實現代碼:
1
def Number():
2
3 """ 10億以內的數與98754互為質數的正整數之和 """
4
5 num1 = 1000000000
6 # num1 = 1000
7 num2 = 98754
8 num2_accept = []
9
10 for i in range(2,num2): # 獲取98754約數,並放入一列表中
11 if (num2 % i == 0) and i > 0:
12 num2_accept.append(i)
13 print num2_accept
14
15 SUM_total = 0
16 x = 1
17 nums = []
18 lengs = len(num2_accept) - 1 # 獲取98754約數列表長度,並減一
19 while (x <= num1): # 1至10億內自然數與98754的約數求余,求得到互為質數的和
20 for z,y in enumerate(num2_accept):
21 if x is y:
22 break
23
24 if x < y:
25 if y % x != 0: # 求余判斷
26 if z == lengs: # 判斷是否已經遍歷98754約數列表求余
27 # nums.append(x)
28 SUM_total += x
29 else:
30 break
31 else:
32 if x % y != 0: # 求余判斷
33 if z == lengs: # 判斷是否已經遍歷98754約數列表求余
34 # nums.append(x)
35 SUM_total += x
36 else:
37 break
38 x += 1
39 print SUM_total
2
3 """ 10億以內的數與98754互為質數的正整數之和 """
4
5 num1 = 1000000000
6 # num1 = 1000
7 num2 = 98754
8 num2_accept = []
9
10 for i in range(2,num2): # 獲取98754約數,並放入一列表中
11 if (num2 % i == 0) and i > 0:
12 num2_accept.append(i)
13 print num2_accept
14
15 SUM_total = 0
16 x = 1
17 nums = []
18 lengs = len(num2_accept) - 1 # 獲取98754約數列表長度,並減一
19 while (x <= num1): # 1至10億內自然數與98754的約數求余,求得到互為質數的和
20 for z,y in enumerate(num2_accept):
21 if x is y:
22 break
23
24 if x < y:
25 if y % x != 0: # 求余判斷
26 if z == lengs: # 判斷是否已經遍歷98754約數列表求余
27 # nums.append(x)
28 SUM_total += x
29 else:
30 break
31 else:
32 if x % y != 0: # 求余判斷
33 if z == lengs: # 判斷是否已經遍歷98754約數列表求余
34 # nums.append(x)
35 SUM_total += x
36 else:
37 break
38 x += 1
39 print SUM_total