java完整注释程序_【尘★原创整理】 经典50题JAVA版程序(含详细注释)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

import java.util.*;

class FenJie {

/**

* 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

* 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

* (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

* (2)如果n≠k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。

* (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

*

*/

// changeYinShu()方法想达到的效果是调用一次该方法就判断一次调用的参数是不是质数 如果是质数,

// 就返回该数, 如果不是,就自行返回该数后面一个相邻质数 比如参数为4,就自行返回5

public static int changeYinShu(int number) { int i = 2;

for (i = 2; i < number; i++) {

if (number % i == 0) {

// 如果传入的参数不是一个质数,那就自动寻找比这个参数大的而且最靠近它的质数

// 其实这个方法,是为了满足下面fenJie()方法里质因数k的需要,找出比k大的一个质数。

number++;

// 这里将i重新赋值为1,因为continue执行后i会自增,想达到的目的是再次让for循环

// 里面的变量i在下次循环是初始为2;

i = 1;

continue;

}

} return number;

} // k为因数,初始值为2. 这是最小的质因数

int k = 2;

/**

* 关于这个递归方法,如果数过大,比如90001会引起堆栈溢出引发错误,有兴趣可以探究一下

*

* */

public int fenJie(int n) {

// 递归的出口

if (n == k) {

System.out.print(k);

return k;

} else {

// 当k是n的一个质因数时,就打印出k,并且将n赋值为 n / k;

if (n % k == 0) {

System.out.print(k + "*");

n = n / k;

return fenJie(n);

} else {

// 若n不能被k整除时,就换下一个质因数,这时调用改变因数changeYinShu()的方法,

// 传入的参数为 k + 1,换下一个因数去试

k = FenJie.changeYinShu(k + 1); return fenJie(n);

}

}

}

} public class Test4 {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

System.out.println("请输入一个正整数:");

int num = input.nextInt(); FenJie fenJieNumber = new FenJie();

// 定义好方法后,要想分解一个数,只需要调用fenJie()方法了

fenJieNumber.fenJie(num); }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值