【Java学习之代码学习】 Prog09_整数分解因式

这里写图片描述

每颗珍珠原本都是一粒沙子,但并不是每粒沙子都能成为珍珠。你得明白,想要卓尔不群,就要有技惊四座的资本;想要一呼百应,就要有海纳百川的心胸。忍受不了磨炼与挫折,承受不住忽视和平淡,就很难达到你所期望的辉煌。人生,原本就应该在阳光下灿烂,在风雨中奔跑。从今天开始,找到最好的自己,奔向更好的未来!早安!

█ Java问题:

每日一题:题目:将一个正整数分解质因数。例如:输入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的值,重复执行第一步。

█ 代码贴图:

########################################################

这里写图片描述
########################################################
这里写图片描述
########################################################
这里写图片描述
########################################################

import java.util.Scanner;

/**
 * 题目:将一个正整数分解质因数。例如:输入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的值,重复执行第一步。
 * 
 * Date 11.15
 *
 */
public class Prog9整数分解因式 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (true) {
System.out.println("请输入一个整数:(输入exit退出 )");
if (in.hasNextInt()) {
decompose(in.nextInt());
} else if ("exit".equals(in.next())) {
System.out.println("退出成功~");
break;
}
}
in.close();
}

private static void decompose(int n) {
//必须是大于2的整数
if (n < 2) {
System.out.print("请输入一个大于2的整数,");
return;
}

//如果是素数直接输出
if (isPrime(n)) {
System.out.println(n + "=" + n);
return;
}
System.out.print(n + "=");
//分解因式
for (int i = 2; i < n + 1; i++) {
while (n % i == 0 && n != i) {
n /= i;
System.out.print(i + "*");
}
if (n == i) {
System.out.println(i);
break;
}
}
}

 /**
  * 素数:质数(prime number)又称素数,有无限个。质数定义为在大于1的自然数中,
  * 除了1和它本身以外不再有其他因数的数称为质数。
  * 
  * 基本判断思路:
  * 在一般领域,对正整数n,如果用2到根下N之间的所有整数去除,均无法整除,则n为质数。
  * 质数大于等于2 不能被它本身和1以外的数整除
  */
private static boolean isPrime(int n) {
if (n <= 3) {
return n > 1;// 2,3是素数
}

for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0)
return false;
}
return true;
}
}

大家早上好啊,今天是星期二了,凡是秉持自己信念而活,就能产生自尊自重与自制力,并且内心平和,你会以内在价值标准,而不是旁人的好恶或别人的比较的结果,来衡量自己,这时候,对事情的对错与别人是否发现无关。加油哦

PS :本篇文章内容不是自己写的,是从崔老师发出来的内容中稍微整理后的博客,顶部的贴图来自微信公众号【人民日报】,最后的一段话,是来自王老师、吴老师的心灵鸡汤!
 

█ 相关资料:

1.人民日报 微信公众号

来了!新闻早班车-人民日报 微信公众号
连接:http://mp.weixin.qq.com/s/nBjJ2vB_gsr-w-Gz7e_0Lw

2.金老师的建议:

  有一大部分同学在学习java的时候,要接收一个用户输入(如:input.nextInt()),基本都没有做输入检查。有没有发现程序非常不稳定,输入一个非数字时,程序一下就崩溃了。
  大家可以讨论一下你们一般怎么来解决这一的程序问题。try catch?hasNextInt()?
  ● 这是非常常见的一个问题,大家是不是可以封装一个方法来解决这个问题,非常具有通用性,然后每次要使用的时候就调用封装的方法即可。
  ● 要接收一个整数,那就返回整数了,要接收一个浮点数,就返回一个浮点数了,要搞清楚方法的作用是什么,做输入检查
  ● 如果输入不对,是不是就不让程序进入下一步呢,要输入正确才能下一步,或者是给一个退出循环的出口,这样给用户的体验是不是会更好呢,程序也更加健壮。

PS :本篇文章使用的内容如果涉及到侵权问题、违反相关规则请联系我,立即删除。
  

转载请注明出处:http://blog.csdn.net/ljb568838953/article/details/53418302

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值