问题源某群一讨论: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