输入一个正整数n,求解并输出 1~n之间能被3整除、但不能被7整除的所有整数之和。
时间: 2024-05-22 22:16:52 浏览: 155
最大公约数能同时被m和n整除的最大数。-C++(谭浩强)
算法一:
使用循环遍历1~n之间的所有整数,判断是否能被3整除且不能被7整除,若符合条件,则将其累加到结果中。
时间复杂度:O(n)
代码如下:
n = int(input())
sum = 0
for i in range(1, n+1):
if i % 3 == 0 and i % 7 != 0:
sum += i
print(sum)
算法二:
利用数学公式,可以得到1~n中能被3整除、但不能被7整除的所有整数之和为:3+6+9+...+(n//3*3),即3的倍数之和。可以使用等差数列求和公式进行计算。
时间复杂度:O(1)
代码如下:
n = int(input())
sum = ((n//3) * (3 + n//3*3)) // 2
print(sum)
阅读全文