01-最大分解

问题描述

  给出一个正整数n,求一个和最大的序列a0,a1,a2,……,ap,满足n=a0>a1>a2>……>ap且ai+1是ai的约数,输出a1+a2+……+ap的最大值。

输入格式

  输入仅一行,包含一个正整数n

输出格式

  一个正整数,表示最大的序列和,即a1+a2+……+ap的最大值

样例输入

10

样例输出

6

import java.util.Scanner;
public class Main{
/*
1.定义了一个名为greatestCommonDivisor的有参函数
这个函数接受一个整数类型的参数x,并返回a
a为定义的整型变量,初始值为1
*/
public static int greatestCommonDivisor(int x){
    int a = 1;
    for(int i = x-1;i > 0;i--){
        if(x % i == 0){//如果x整除的i为0  
            a = i;//则这个i即为所求的最大公约数a
            break;//跳出循环
           }
        }
        return a;
    }
    public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    int sum = 0;
    while(n > 1){//不知道循环次数,只知道循环条件
        sum = sum + greatestCommonDivisor(n);
        n = greatestComonDivisor(n);
        }
       System.out.println(sum);
    }
}
    
    

1.用到了Java有参函数

在Java中,函数是一段可以重复使用的代码块,用于执行特定的任务。Java中的函数可以分为有参函数和无参函数两种类型。有参函数接受参数,而无参函数不接受任何参数。

1.1有参函数和无参函数的主要区别

在于它们是否接受参数。有参函数通过参数来接收外部传入的数据,可以根据传入的参数执行不同的操作。而无参函数不接受任何参数,它们通常用于执行固定的操作或返回固定的值。

步骤描述
1定义函数的名称和返回类型
2根据需要,定义函数的参数列表
3在函数体中编写具体的代码
4根据需要,返回结果或执行其他操作

1.2 无参函数

/*
在这个示例中,我们定义了一个名为first的无参函数。
这个函数的作用是打印"hello small java"。
在main函数中,我们通过first()来调用这个无参函数。
 */
public class Demo1 {
    public static void first(){//定义无参函数
        System.out.println("hello small java");
    }
    public static void main(String[] args){//调用无参函数
        first();
    }
}

1.3 有参函数

/*
在这个示例中,我们定义了一个名为add的有参函数。
这个函数接受两个整数类型的参数num1和num2,并返回它们的和。
在main函数中,我们通过add(10, 20)来调用这个有参函数,
并将返回的结果赋值给sum变量。
 */
public class Demo2 {
    public static int add(int num1,int num2){
        //定义有参函数
        int sum = num1 + num2;
        return sum;
    }

    public static void main(String[] args) {
        //调用有参函数
        int sum = add(10,20);
        System.out.println("sum = :" + sum);
    }
}

1.4 总结

有参函数和无参函数是Java中常用的函数类型。有参函数通过参数接受外部传入的数据,可以根据传入的参数执行不同的操作。无参函数不接受任何参数,通常用于执行固定的操作或返回固定的值。通过定义函数的名称、返回类型和参数列表,我们可以轻松地实现有参函数和无参函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值