数学问题
从1到1989的所有自然数中,挑出一部分数,使任意两个数的差即不是5也不是8,最多能挑出多少个数?
用pyhton怎么解决这个数学问题
从1到1989的所有自然数中,挑出一部分数,使任意两个数的差即不是5也不是8,最多能挑出多少个数?
用pyhton怎么解决这个数学问题
任意两个数的差不是5也不是8,可以转化为任意两个数不在同一个5的倍数的序列或8的倍数的序列中。因此,我们可以把1~1989分成5的倍数和8的倍数两类,前者作为A序列,后者作为B序列。
如果把A序列中的数按照5的倍数顺序依次放入答案序列中,再把B序列中的数按照8的倍数顺序依次放入答案序列中,就可以满足题目中的条件。
A = [i for i in range(1, 1990) if i % 5 == 0 and i % 8 != 0]
B = [i for i in range(1, 1990) if i % 8 == 0 and i % 5 != 0]
result = []
for i in range(0, len(A)):
result.append(A[i])
if i < len(B):
result.append(B[i])
print(result)
print(len(result))