各位大神们,问2个java程序的问题,帮我变一下,不胜感激
1,从键盘输入两个整数,求他们的最小公倍数并输出。2,从键盘输入一个5位以内的数,求它的各个位上的数字的和并输出。...
1,从键盘输入两个整数,求他们的最小公倍数并输出。
2,从键盘输入一个5位以内的数,求它的各个位上的数字的和并输出。 展开
2,从键盘输入一个5位以内的数,求它的各个位上的数字的和并输出。 展开
2个回答
展开全部
package com.tenderlitch.bdzd.math;
import java.util.Scanner;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入两个正整数:");
int m = scanner.nextInt(), n = scanner.nextInt();
System.out.println(m + "和" + n + "的最小公倍数是:" + minCommonMultiple(m, n));
System.out.println("请输入一个正整数:");
int l = scanner.nextInt();
System.out.println(l + "各个位上数字的和是:" + digitallySum(l));
}
/**
* 求最小公倍数
*/
public static int minCommonMultiple(int m, int n) {
// 最小公倍数=两数的乘积除以最大公约数
return m * n / minCommonDivisor(m, n);
}
public static int digitallySum(int m) {
// 各位的和
int sum = 0;
// 除非计算的数字已经等于0(个位数除以10都会等于0),否则一直取最后一位加和
while (m > 0) {
// m和10的余数,就是数字最后一位的值
int remainder = m % 10;
// 最后一位加入到总和里
sum += remainder;
// 算完最后一位后,将最后一位去掉,继续循环取去掉之后的数的最后一位
m = (m - remainder) / 10;
}
return sum;
}
/**
* 求最大公约数
*/
public static int minCommonDivisor(int m, int n) {
int tmp;
// 求出较大和较小的数
int max = m > n ? m : n, min = m < n ? m : n;
// 大数和小数取余
tmp = max % min;
// 如果余数为0,则小数为最大公约数
if (tmp == 0)
return min;
// 如果余数不为0,则用小数和余数继续重复上述过程直到余数为0
else
return minCommonDivisor(min, tmp);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询