首页 > 试题广场 >

最大的奇约数

[编程题]最大的奇约数
  • 热度指数:31983 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
小易是一个数论爱好者,并且对于一个数的奇数约数十分感兴趣。一天小易遇到这样一个问题: 定义函数f(x)为x最大的奇数约数,x为正整数。 例如:f(44) = 11.
现在给出一个N,需要求出 f(1) + f(2) + f(3).......f(N)
例如: N = 7
f(1) + f(2) + f(3) + f(4) + f(5) + f(6) + f(7) = 1 + 1 + 3 + 1 + 5 + 3 + 7 = 21
小易计算这个问题遇到了困难,需要你来设计一个算法帮助他。

输入描述:
输入一个整数N (1 ≤ N ≤ 1000000000)


输出描述:
输出一个整数,即为f(1) + f(2) + f(3).......f(N)
示例1

输入

7

输出

21
头像 xd--
发表于 2024-10-21 10:21:50
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static long jishu(long n) { long s1 = 0; 展开全文
头像 DearAlice
发表于 2024-08-21 17:23:29
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = 展开全文
头像 肖某人Echo
发表于 2024-09-08 22:02:32
奇数最大奇约数是本身,偶数最大奇约数是除以所有偶因子后的那个奇数 所以当计算num的最大的奇约数之和可以转换为 1.计算所有奇数的最大奇约数之和+所有偶数的最大奇约数之和 2.所有偶数的最大奇约数之和可以转换为/2之后,计算所有奇数的最大奇约数之和+所有偶数的最大奇约数之和 3.循环第二步,直到n 展开全文