← RoseCode

ROSECODE 333

减去真因数

Subtracting proper divisors

Philippe_57721 · 编程 ·

给定一个整数 n,我们应用以下过程:
- 搜索n的最大真因数
- 从 n 中减去这个数字
- 重复直到到达 1

令 f(n) 为到达 1 之前的步数。

n = 30 的示例
  • n = 30 - 15(15 = 30 的最大真除数)
  • n = 15 - 5(5 = 15 的最大真除数)
  • n = 10 - 5(5 = 10 的最大真除数)
  • n = 5 - 1(1 = 5 的最大真除数)
  • n = 4 - 2(2 = 4 的最大真除数)
  • n = 2 - 1(1 = 2 的最大真除数)
  • n = 1 停止 => f(30) = 6
求 f(1000000!) // 阶乘(1000000)

[我的计时:6 秒]