C语言中求1到N之间能被2或5整除的数之和
求1到N之间能被2或5整除的自然数之和,可以先求1到N之间能被2整除的数之和,再求1到N之间能被5整除的数之和,将两者相加,再减去1到N之间能被10整除的数之和,即可得到结果。这种方法高效,适用于求解较大N值的情况。
有些人可能会想到使用循环和条件语句来累加所有能被2或5整除的数,但这方法效率低下,时间复杂度为O(n)。这意味着对于较大的n值,程序将运行n次循环,从而降低程序效率。
求能被2整除的n个自然数之和的公式
Sum2 = ((n / 2) * (4 + (n / 2 - 1) * 2)) / 2
求能被5整除的n个自然数之和的公式
Sum5 = ((n / 5) * (10 + (n / 5 - 1) * 5)) / 2
求能被10整除的n个自然数之和的公式
Sum10 = ((n / 10) * (20 + (n / 10 - 1) * 10)) / 2
预期输出
Sum = Sum2 + Sum5 - Sum10
示例
#include <stdio.h>
int main() {
int n = 25;
long int sum2, sum5, sum10;
sum2 = ((n / 2) * (4 + (n / 2 - 1) * 2)) / 2;
sum5 = ((n / 5) * (10 + (n / 5 - 1) * 5)) / 2;
sum10 = ((n / 10) * (20 + (n / 10 - 1) * 10)) / 2;
long int sum = sum2 + sum5 - sum10;
printf("Sum is %d", sum);
return 0;
}输出
Sum is 201
广告
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP