Java-求各位上数字之和

1、问题:
从键盘接收一个数字,写一个方法来求这个数字每一位上的数字之和,采用递归的方法
2、分析:
从键盘接受已经使用了很多次,导入Scanner类的包 java.util.Scanner
如何得到这个数字的每一位,并且是用递归的方法
剥离数位:比如说给一个数字%10得到的就是个位上的数字,给一个数字/10就会得到除个位以外的数字。
剥离数位的思想
3、代码实现

在这里插入代码片package demomethod03;
import java.util.Scanner;

/**
 *
 * 写一个递归方法,输入一个非负整数,返回组成它的数字之和
 *     分析:组成它的每一位  如何得到每一位?    num%10
 */
public class AddEveryNum {
    public static void main(String[] args) {
        System.out.println("请输入你要求的数字:");
        Scanner sc=new Scanner(System.in);
        int num=sc.nextInt();
        int ret=addNum(num);
        System.out.println(ret);
    }

    private static int addNum(int num) {
        if(num<10){
            return num;
        }
        return num%10+addNum(num/10);
    }
}

4、运行结果
在这里插入图片描述

Java中,计算一个所有素因子各位上数字之和的步骤可以分为以下几个部分: 1. **分解因式**:首先需要找到给定整的所有质因。可以使用循环和条件判断来实现,例如试除法或更高效的算法如Pollard's rho算法。 ```java public List<Integer> primeFactors(int num) { List<Integer> factors = new ArrayList<>(); for (int i = 2; i <= Math.sqrt(num); i++) { while (num % i == 0) { factors.add(i); num /= i; } } if (num > 1) { // 如果num还有剩余(即num是质),添加到factors factors.add(num); } return factors; } ``` 2. **计算每个因子的位值之和**:对于每个质因子,我们需要将其转换成字符串,然后遍历每一位,累加其数值。 ```java public int sumDigitValues(int factor) { String factorStr = Integer.toString(factor); int sum = 0; for (char digit : factorStr.toCharArray()) { sum += Character.getNumericValue(digit); } return sum; } // 结合两个函 public int sumPrimeFactorDigitsSums(List<Integer> factors) { int totalSum = 0; for (int factor : factors) { totalSum += sumDigitValues(factor); } return totalSum; } ``` 3. **整体调用**:最后将上述两个方法结合起来,输入一个,先找出它的素因子,再计算各位上的数字之和。 ```java public static void main(String[] args) { int num = 9756; // 示例输入 List<Integer> factors = primeFactors(num); int result = sumPrimeFactorDigitsSums(factors); System.out.println("The sum of the digits in the prime factors is: " + result); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值