题目:
找出最小n!的正整数1+2+3+…+n,使得从n!的所有整数之和大于等于200。
实现思路:
- 初始化变量
i
为1,表示当前正在检查的整数,变量j
为1,用于内层循环的计数,变量sum
为0,用于累加从1到i
的所有整数之和。- 使用外层
for
循环,从1开始逐步增加i
的值,直到i
达到200(不包括200)。- 在每次外层循环中,初始化
sum
为0,然后使用内层for
循环,从1到i
逐步累加整数到sum
中。- 检查
sum
是否大于等于200。如果是,则打印出当前的i
和sum
的值,并退出程序。- 如果
sum
小于200,则继续外层循环,增加i
的值,重复上述步骤。
代码:
#include <stdio.h>
int main() {
int i, j, sum = 0; // 初始化变量i, j, sum
for (i = 1; i < 200; i++, sum = 0) { // 外层循环,i从1开始,直到小于200
for (j = 1; j <= i; j++) { // 内层循环,j从1开始,直到等于i
sum += j; // 累加j到sum中
}
if (sum >= 200) { // 检查sum是否大于等于200
printf("Num:%d Sum:%d\n", i, sum); // 如果是,打印i和sum的值
return 0; // 并退出程序
}
}
return 0; // 如果循环结束仍未找到满足条件的i,则正常退出程序(但实际上这种情况不会发生)
}
解读:
#include <stdio.h>
:引入标准输入输出库,以便使用printf
函数。int main() { ... }
:程序的主函数。int i, j, sum = 0;
:声明三个整型变量i
、j
和sum
,并初始化sum
为0。for (i = 1; i < 200; i++, sum = 0) { ... }
:外层循环,i
从1开始,每次循环后增加1,直到i
小于200。循环开始前,sum
被重置为0。for (j = 1; j <= i; j++) { ... }
:内层循环,j
从1开始,每次循环后增加1,直到j
等于i
。sum += j;
:在内层循环中,将j
的值累加到sum
中。if (sum >= 200) { ... }
:检查sum
是否大于等于200。printf("Num:%d Sum:%d\n", i, sum);
:如果sum
大于等于200,则打印出当前的i
和sum
的值。return 0;
:在找到满足条件的i
后,退出程序。