返回目录

输入一个数(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"); // 输出换行
            }
        }
    }
}
最后修改:2024 年 04 月 19 日
如果觉得我的文章对你有用,请随意赞赏