算法训练 最大分解
提示:蓝桥杯 算法训练:
1.题目
问题描述:
给出一个正整数n,求一个和最大的序列a0,a1,a2,……,ap,满足n=a0>a1>a2>……>ap且ai+1是ai的约数,输出a1+a2+……+ap的最大值
2.输入格式
输入仅一行,包含一个正整数n
3.输出格式
一个正整数,表示最大的序列和,即a1+a2+……+ap的最大值
4.原因分析:
提示:
2022/4/15补
5.代码呈现
import java.util.Scanner;
public class Main {
static int maxSum;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
Recurve(n);
System.out.println(maxSum);
}
static void Recurve(int obj)
{
int ap = 0;
for(int i = 2;i < obj;i++)
{
if(obj % i == 0 && obj / i != 1)
{
maxSum += obj / i;
ap = obj / i;
Recurve(ap);
break;
}
}
if(ap == 0)
maxSum += 1;
}
}