一个正整数若等于除自己本身外 的因子和,则称此数为完全数。 例如:6有因子1,2,3。同时6=1+2+3,所以6是完全数。 打印1~n的所有完全数。 输入 一个正整数 N ( 0 ≤ 𝑁 ≤ 10 18 ) 输出 打印1~n的所有完全数。 样例输入 复制 1000 样例输出 复制 6 28 496
```python def find_perfect_numbers(n): # 已知的完全数都是梅森素数对应的形式:2^(p-1) * (2^p - 1) # 其中 p 是素数,且 2^p - 1 也是素数(梅森素数) # 对于 n ≤ 10^18,只需要检查前几个梅森素数 # 前几个梅森素数对应的完全数 perfect_numbers = [] # 已知的梅森素数指数 p mersenne_primes = [2, 3, 5, 7, 13, 17, 19, 31] for p in mersenne_primes: # 计算梅森数 M = 2^p - 1 mersenne = (1 << p) - 1 # 2^p - 1 # 计算对应的完全数 perfect = (1 << (p - 1)) * mersenne # 2^(p-1) * (2^p - 1) # 如果完全数在范围内,添加到结果列表 if perfect <= n: perfect_numbers.append(perfect) else: # 由于完全数按指数增长,后续的完全数都会超过 n break return perfect_numbers # 读取输入 n = int(input()) # 查找完全数 result = find_perfect_numbers(n) # 输出结果 for num in result: print(num) ``` 代码说明: 1. 完全数的数学性质:完全数具有特定形式,即 `2^(p-1) * (2^p - 1)`,其中 `p` 是素数,且 `2^p - 1` 也是素数(梅森素数)。 2. 算法优化:直接检查每个数的因子和会超时,特别是当 `n` 最大可达 `10^18` 时。利用完全数的数学性质,只需检查已知的梅森素数对应的完全数。 3. 已知梅森素数:代码中列出了前几个梅森素数指数 `p`,对应的完全数在 `10^18` 范围内只有前几个。 4. 位运算优化:使用 `1 << p` 计算 `2^p`,效率高于 `2p`。 5. 提前终止:当计算出的完全数超过 `n` 时,后续的完全数必然更大,可以提前结束循环。 时间复杂度:O(1),因为只检查固定数量的梅森素数。 空间复杂度:O(1),只使用常数空间存储结果。 [2026-01-18 12:42:34 | AI问答 | 575点数解答]
- [DeepSeek] 一个正整数若等于除自己本身外 的因子和,则称此数为完全数。 例如:6有因子1,2,3。同时6=1+2+3,所以6是完全数。 打印1~n的所有完全数。 输入 一个正整数 N ( 0 ≤ 𝑁 ≤ 10 18 ) 输出 打印1~n的所有完全数。 样例输入 复制 1000 样例输出 复制 6 28 496(575点数解答 | 2026-01-18 12:42:34)14
- [字节豆包] 题目描述 给定一个包含 n n 个整数的数列,请统计其中有多少个整数满足大于 x x 且小于 y y,并输出所有满足要求的整数之和 例如: n n = 6 6,数列为 [ 13 , 31 , 45 , 17 , 20 , 99 ] [13,31,45,17,20,99]; x = 18 x=18, y = 50 y=50,数列中满足大于 18 18 且小于 50 50 的整数有 31 、 45 、 20 31、45、20,和为 96 ( 31 + 45 + 20 ) 96(31+45+20)。 输入格式 第一行输入三个整数 n n、 x x 和 y y,整数之间以一个空格隔开; 第二行输入 n n 个整数,整数之间以一个空格隔开。 输出格式 输出一个整数,表示数列中所有满足大于 x x 且小于 y y 的整数之和。 input1 复制 6 18 50 13 31 45 17 20 99 output1 复制 96 数据规模与约定 1 ≤ n ≤ 1000 1≤n≤1000, 1 ≤ x < y ≤ 5000 1≤x<y≤5000, 1 ≤ 1≤ 每个(281点数解答 | 2025-11-29 20:20:58)98
- [字节豆包] 题目描述 读入一个 的数字矩阵,输出数字矩阵的主对角线之和。 即自左上到右下这条对角线。 输入 读入一个整数 , 不超过 。 接下来读入 行 列的数字矩阵。每个数字的范围在 ~ 之间。 输出 输出数字矩阵的主对角线之和。 样例输入 复制 10 10 4 4 3 7 9 8 5 7 9 10 10 6 3 10 3 6 4 10 3 4 10 4 1 4 4 8 8 8 7 7 9 9 9 9 9 10 4 3 5 1 6 2 6 4 6 6 5 8 10 3 9 8 7 6 9 8 7 6 4 2 7 9 5 7 3 5 4 8 4 1 2 1 4 10 3 2 2 8 2 10 6 10 8 5 5 10 9 6 6 7 6 4 5 10 5 6 5 10 9 样例输出 复制(358点数解答 | 2025-12-08 12:25:06)54
- [字节豆包] 题目描述 读入一个 的数字矩阵,输出数字矩阵左上角的数字之和。 如上图蓝色部分所示:副对角线数字上方的就是左上角数字。 输入 读入一个整数 , 不超过 。 接下来读入 行 列的数字矩阵。每个数字的范围在 ~ 之间。 输出 输出数字矩阵的左上角之和。 样例输入 复制 10 10 4 4 3 7 9 8 5 7 9 10 10 6 3 10 3 6 4 10 3 4 10 4 1 4 4 8 8 8 7 7 9 9 9 9 9 10 4 3 5 1 6 2 6 4 6 6 5 8 10 3 9 8 7 6 9 8 7 6 4 2 7 9 5 7 3 5 4 8 4 1 2 1 4 10 3 2 2 8 2 10 6 10 8 5 5 10 9 6 6 7 6 4 5 10 5 6 5 10 9 样例输出 复制 273(333点数解答 | 2025-12-08 17:52:36)52
- [字节豆包] 题目描述 读入一个 的数字矩阵,输出数字矩阵左上角的数字之和。 如上图蓝色部分所示:副对角线数字上方的就是左上角数字。 输入 读入一个整数 , 不超过 。 接下来读入 行 列的数字矩阵。每个数字的范围在 ~ 之间。 输出 输出数字矩阵的左上角之和。 样例输入 复制 10 10 4 4 3 7 9 8 5 7 9 10 10 6 3 10 3 6 4 10 3 4 10 4 1 4 4 8 8 8 7 7 9 9 9 9 9 10 4 3 5 1 6 2 6 4 6 6 5 8 10 3 9 8 7 6 9 8 7 6 4 2 7 9 5 7 3 5 4 8 4 1 2 1 4 10 3 2 2 8 2 10 6 10 8 5 5 10 9 6 6 7 6 4 5 10 5 6 5 10 9 样例输出 复制 273(387点数解答 | 2025-12-08 17:54:37)56
- [DeepSeek] 题目描述 读入一个 的数字矩阵,输出数字矩阵的主对角线之和。 即自左上到右下这条对角线。 输入 读入一个整数 , 不超过 。 接下来读入 行 列的数字矩阵。每个数字的范围在 ~ 之间。 输出 输出数字矩阵的主对角线之和。 样例输入 复制 10 10 4 4 3 7 9 8 5 7 9 10 10 6 3 10 3 6 4 10 3 4 10 4 1 4 4 8 8 8 7 7 9 9 9 9 9 10 4 3 5 1 6 2 6 4 6 6 5 8 10 3 9 8 7 6 9 8 7 6 4 2 7 9 5 7 3 5 4 8 4 1 2 1 4 10 3 2 2 8 2 10 6 10 8 5 5 10 9 6 6 7 6 4 5 10 5 6 5 10 9 样例输出 复制 68(107点数解答 | 2025-12-29 12:22:27)36
- [字节豆包] 用C++输出:打印 ~ 之间的所有整数。 输入 读入一个整数 (1<=n<=1000) 输出 打印 ~ 之间的所有整数。 样例输入 复制 5 样例输出 复制 0 1 2 3 4 5(228点数解答 | 2025-12-12 18:22:24)39
- [字节豆包] 打印 ~ 之间的所有整数。 输入 读入一个整数 (1<=n<=1000) 输出 打印 ~ 之间的所有整数。 样例输入 复制 5 样例输出 复制 0 1 2 3 4 5(126点数解答 | 2025-12-12 18:21:54)27
- [字节豆包] 打印 ~ 之间的所有整数。 输入 读入一个整数 (1<=n<=1000) 输出 打印 ~ 之间的所有整数。 样例输入 复制 5 样例输出 复制 0 1 2 3 4 5(264点数解答 | 2025-12-12 19:37:01)29
- [讯飞星火] 题目描述 打印 ~ 之间的所有整数。 输入 读入一个整数 (1<=n<=1000) 输出 打印 ~ 之间的所有整数。 样例输入 复制 5 样例输出 复制 0 1 2 3 4 5(569点数解答 | 2025-12-17 12:23:47)40
- [百度文心] c++描述 小夏同学在思考一个复杂的问题: 输入 m,a,n,请输出 ( i=1 ∑ n a i )modm,即 (a+a 2 +⋯+a n )modm。 说明/提示 对于所有测试数据,保证:1≤m,a≤10 9 ,1≤n≤10 15 。 测试点编号 n a 特殊性质 1−3 ≤10 7 ≤10 9 无 4−6 ≤10 15 ≤2 无 7−10 ≤10 15 ≤10 9 m 为质数 11−20 ≤10 15 ≤10 9 无 输入描述 输入 m,a,n。 输出描述 输出 ( i=1 ∑ n a i )modm。 用例输入 1 1000 2 10 用例输出 1 46 用例输入 2 11451410 1919811 8765423561347 用例输出 2 2213137 用例输入 3 114514 9999 1000 用例输出 3 28840(911点数解答 | 2025-03-29 19:12:07)343
- [字节豆包] 题目描述 很多博物馆都承载着各地的历史与文化,某博物馆针对不同年龄段的人,设置了不同的门票价格: 0 0 岁(含) ~ 6 6 岁(含): 0 0 元 6 6 岁 ~ 18 18 岁(含): 20 20 元 18 18 岁 ~ 22 22 岁(含): 25 25 元 60 60 岁(含)以上: 30 30 元 其他年龄段: 60 60 元 输入格式 一行,一个整数 n n 表示年龄。 输出格式 一个整数,表示这个年龄对应的门票价格。 input1 复制 6 output1 复制 0元 input2 复制 36 output2 复制 60元 数据规模与约定 对于 100 % 100% 的数据, 0 ≤ n ≤ 120 0≤n≤120。C++ 程序 on(385点数解答 | 2025-08-31 13:06:49)189