Java重写《C经典100题》 --14

【程序14】
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
1.程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: 
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
2.程序源代码:

 1 import java.util.Scanner;
 2
 3 /*本文转自博客:www.cnblogs.com/java-100
 4  【程序14】
 5  题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
 6  程序分析:对n进行分解质因数,应然后按下述步骤完成:
 7  (1)先找到一个最小的质数k。
 8  (2)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
 9  (3)如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。
10  (4)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
11  */
12
13 public class Java14 {
14
15     public static void main(String[] args) {
16         System.out.print("请输入一个正整数:");
17         Scanner scanner = new Scanner(System.in);
18         int number = scanner.nextInt();
19         scanner.close();
20         int num = number;
21         System.out.print(num + "=");
22         boolean a = true;
23         while (a) {
24             a = false;
25             for (int i = 2; i < Math.sqrt(number); i++) {
26                 boolean prime = true;
27                 for (int j = 2; j < i; j++) {
28                     if (i % j == 0) {
29                         prime = false;
30                         break;
31                     }
32                 }
33                 if (prime) {
34                     if (num > i) {
35                         if (num % i == 0) {
36                             System.out.print(i + "*");
37                             num /= i;
38                             i = 2;
39                             a = true;
40                             break;
41                         }
42                     } else {
43                         System.out.print(num);
44                         break;
45                     }
46                 }
47             }
48         }
49     }
50 }
时间: 2024-12-21 09:14:12

Java重写《C经典100题》 --14的相关文章

java&amp;nbsp;考试&amp;nbsp;面试&amp;nbsp;经典100题

1.面向对象的特征有哪些方面 (1)抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象. (2)继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类).派生类可以从

Java重写《C经典100题》 --37

[程序37] 题目:对10个数进行排序 1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换.    2.程序源代码: 1 import java.util.Arrays; 2 import java.util.Random; 3 4 /** 5 * 6 *[程序37] 7 * 题目:对10个数进行排序. 8 * 程序分析:可以利用冒泡排序,当然也可以 Arrays.sort(); 9 * 为了看清楚排序的每一个

Java重写《C经典100题》 --38

[程序38] 题目:求一个3*3矩阵对角线元素之和  1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出. 2.程序源代码: 1 import java.util.Arrays; 2 import java.util.Random; 3 4 /** 5 * 6 *[程序38] 7 * 题目:求一个3*3矩阵对角线元素之和. 8 * 程序分析:利用双重for循环控制输入二维数组,再将arr[i][i]累加后输出. 9 * 10 * @author www.cnblogs

Java重写《C经典100题》 --40

[程序40] 题目:将一个数组逆序输出. 1.程序分析:用第一个与最后一个交换. 2.程序源代码: 1 import java.util.Arrays; 2 import java.util.Random; 3 4 /** 5 * 6 *[程序40] 7 * 题目:将一个数组逆序输出. 8 * 程序分析:第一个与最后一个交换,,第二个与最后第二个交换,如此循环. 9 * 10 * @author www.cnblogs.com/java-100 11 * 12 */ 13 14 public c

Java重写《C经典100题》 --04

[程序4] 题目:输入某年某月某日,判断这一天是这一年的第几天? 1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天. 2.程序源代码: 1 import java.util.Scanner; 2 3 /* 4 [程序4] 5 题目:输入某年某月某日,判断这一天是这一年的第几天? 6 程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天. 7 特殊情况,闰年且输入月份大于3时需考虑多加一

Java重写《C经典100题》 --15

[程序15] 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示. 1.程序分析:(a>b)?a:b这是条件运算符的基本例子. 2.程序源代码: 1 import java.util.Scanner; 2 3 /*本文转自博客:www.cnblogs.com/java-100 4 [程序15] 5 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示.

Java重写《C经典100题》 --05

[程序5] 题目:输入三个整数x,y,z,请把这三个数由小到大输出. 1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小. 2.程序源代码: 1 import java.util.Scanner; 2 3 /*本文转自博客:www.cnblogs.com/java-100 4 [程序5] 5 题目:输入三个整数x,y,z,请把这三个数由小到大输出. 6 程序分析:我们想办法把

Java重写《C经典100题》 --36

[程序36] 题目:求100之内的素数 1.程序分析: 2.程序源代码: 1 /** 2 * 3 *[程序36] 4 * 题目:求100之内的素数. 5 * 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数. 6 * 7 * @author www.cnblogs.com/java-100 8 * 9 */ 10 11 public class Java36 { 12 13 public static void main(String

Java重写《C经典100题》 --11

[程序11] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.... 2.程序源代码: 1 import java.util.Scanner; 2 3 /*本文转自博客:www.cnblogs.com/java-100 4 [程序11] 5 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个