You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP/Python实现相邻求和取个位的金字塔数字计算

金字塔数值计算程序实现方案

规则中两数求和后反复相加至个位数的逻辑,可直接通过数根公式简化计算,无需循环逐位累加:对于两数之和s,若s == 0结果为0,若s % 9 == 0结果为9,其余情况结果为s % 9,计算结果和逐位累加逻辑完全等价。


Python 实现

def calc_pyramid_num(input_str: str) -> None:
    # 校验输入为纯数字格式
    if not input_str.isdigit():
        print("输入必须为纯数字字符串")
        return
    current = input_str
    level = 1
    while True:
        print(f"第{level}层:{current}")
        # 长度为2时终止迭代
        if len(current) == 2:
            break
        next_layer = []
        # 遍历所有相邻数字对
        for i in range(len(current) - 1):
            a = int(current[i])
            b = int(current[i+1])
            s = a + b
            # 计算单数字结果
            if s == 0:
                res = 0
            elif s % 9 == 0:
                res = 9
            else:
                res = s % 9
            next_layer.append(str(res))
        current = ''.join(next_layer)
        level += 1

# 测试示例 输入12345
if __name__ == "__main__":
    calc_pyramid_num("12345")

代码运行输出:

第1层:12345
第2层:3579
第3层:837
第4层:21

和参考计算结果完全匹配。


PHP 实现

<?php
function calcPyramidNum(string $inputStr): void {
    // 校验输入为纯数字格式
    if (!ctype_digit($inputStr)) {
        echo "输入必须为纯数字字符串\n";
        return;
    }
    $current = $inputStr;
    $level = 1;
    while (true) {
        echo "第{$level}层:{$current}\n";
        // 长度为2时终止迭代
        if (strlen($current) == 2) {
            break;
        }
        $nextLayer = [];
        $len = strlen($current);
        // 遍历所有相邻数字对
        for ($i = 0; $i < $len - 1; $i++) {
            $a = intval($current[$i]);
            $b = intval($current[$i+1]);
            $s = $a + $b;
            // 计算单数字结果
            if ($s == 0) {
                $res = 0;
            } elseif ($s % 9 == 0) {
                $res = 9;
            } else {
                $res = $s % 9;
            }
            $nextLayer[] = strval($res);
        }
        $current = implode('', $nextLayer);
        $level++;
    }
}

// 测试示例 输入12345
calcPyramidNum("12345");
?>

上述PHP代码运行输出和Python版本完全一致,符合所有计算规则。

如果不想使用数根公式,也可以在得到两数之和后,循环判断和是否大于等于10,若大于等于10则拆分各位相加直到结果为个位数,逻辑效果完全相同,数根公式仅用于减少循环步骤、提升计算效率。

内容的提问来源于stack exchange,提问作者qaiserjutt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 15:06:23