这一题通过分析可以发现,最小成本就是所有非1因数的和,当然1除外
那么我们就可以写出如下判断
如果n是质数,那么最小成本肯定就是n
如果n是1,那么最小成本是0
如果n以上都不是,那么就要求它的因数
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
ArrayList<Integer> list=new ArrayList<>();
int t=n;
if(isPrime(n)) {
list.add(n);
}else if(n==1) {
list.add(0);
}else {
while(true) {
for (int i = 2; i < n; i++) {
if(t%i==0) {
list.add(i);
t=t/i;
break;
}
}
if(t==1) {
break;
}
}
}
int count=0;
for(Integer x:list) {
count+=x;
}
System.out.println(count);
}
public static boolean isPrime(int n) {
if(n<=1)return false;
for (int i = 2; i <=Math.sqrt(n); i++) {
if(n%i==0)return false;
}
return true;
}
}



京公网安备 11010502036488号