返回目录
输入一个数(1\~1000),输出这个数是哪些连续自然数之和
示例:
输入:
9
输出:
9=9
9=4+5
9=2+3+4
Result:3
Python源码
import math
def main():
# 从用户输入获取一个整数
n = int(input("请输入一个整数:"))
# 遍历从1到n的一半的范围
for i in range(1, n // 2 + 1):
a = i # 将当前循环的值赋给a
# 计算特定公式中的变量w
w = (2 * a - 1) * (2 * a - 1) + 8 * n
# 计算w的平方根并转换为整数
k = int(math.sqrt(w))
# 计算输出的数字个数
m = k - 2 * a + 1
# 检查是否满足条件,如果不满足则继续下一次循环
if k * k != w:
continue
elif m % 2 != 0:
continue
else:
# 输出满足条件的结果
print("本次输出{}个数:".format(m // 2))
for j in range(1, m // 2 + 1):
print(i + j - 1, end=" ") # 输出每个数字
print("\n") # 输出换行
if __name__ == "__main__":
main()
C语言源码
#include <stdio.h>
#include <math.h>
void main() {
int n;
printf("请输入一个整数:"); // 提示用户输入一个整数
scanf("%d", &n); // 读取用户输入的整数
int i, j, a, w, k, m;
for (i = 1; i <= n / 2; i++) {
a = i; // 将当前循环的值赋给a
w = (2 * a - 1) * (2 * a - 1) + 8 * n; // 计算特定公式中的变量w
k = (int)sqrt(w); // 计算w的平方根并转换为整数
m = k - 2 * a + 1; // 计算输出的数字个数
if (k * k != w) { // 检查是否满足条件,如果不满足则继续下一次循环
continue;
} else if (m % 2 != 0) { // 检查是否满足条件,如果不满足则继续下一次循环
continue;
} else {
printf("本次输出%d个数:\n", m / 2); // 输出满足条件的结果
for (j = 1; j <= m / 2; j++) {
printf("%d ", i + j - 1); // 输出每个数字
}
printf("\n\n"); // 输出换行
}
}
}
Java源码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个整数:");
int n = scanner.nextInt(); // 获取用户输入的整数
int i, j, a, w, k, m;
for (i = 1; i <= n / 2; i++) {
a = i; // 将当前循环的值赋给a
w = (2 * a - 1) * (2 * a - 1) + 8 * n; // 计算特定公式中的变量w
k = (int)Math.sqrt(w); // 计算w的平方根并转换为整数
m = k - 2 * a + 1; // 计算输出的数字个数
if (k * k != w) { // 检查是否满足条件,如果不满足则继续下一次循环
continue;
} else if (m % 2 != 0) {
continue;
} else {
System.out.println("本次输出" + m / 2 + "个数:"); // 输出满足条件的结果
for (j = 1; j <= m / 2; j++) {
System.out.print((i + j - 1) + " "); // 输出每个数字
}
System.out.println("\n"); // 输出换行
}
}
}
}
1 条评论
[...]序号题目1父母小于等于n的最简真分数2大于n的最小回文素数3多个数的最小公倍数4多个数的最大公约数5文件单词统计610进制数转2进制7连续自然数8水仙花数9每日温度[...]