问题描述
给出一个正整数n,求一个和最大的序列a0,a1,a2,……,ap,满足n=a0>a1>a2>……>ap且ai+1是ai的约数,输出a1+a2+……+ap的最大值
输入格式
输入仅一行,包含一个正整数n
输出格式
一个正整数,表示最大的序列和,即a1+a2+……+ap的最大值
样例输入
10
样例输出
6
数据规模和约定
1<n<=10^6
样例说明
p=2
a0=10,a1=5,a2=1,6=5+1
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
public class Main {
static int max;
// 构建求最大数方法
public static void Maxys(int a) {
if (a == 2) {
max += 3;
} else {
// 求当前数最大约数
for (int i = 2; i < a; i++) {
if (a % i == 0) {
a /= i;
max += a;
Maxys(a);
break;
} else if (i == a - 1) {
a = 1;
max += 1;
}
}
}
}
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
in.nextToken();
int n = (int) in.nval;
Maxys(n);
out.print(max);
out.flush();
}
}