1 /*4 【程序 4 分解质因数】 2 题目:将一个大于 2 正整数分解质因数。例如:输入 3, 3=3, 输入 6, 6=2*3,输入 90, 90=2*3*3*5。 3 程序分析:对 n 进行分解质因数,应先找到一个最小的质数 k,然后按下述步骤完成: 4 (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 5 (2)如果 n<>k,但 n 能被 k 整除,则应打印出 k 的值,并用 n 除以 k 的商,作为新的正整数 n,重复执行第 6 一步。 7 (3)如果 n 不能被 k 整除,则用 k+1 作为 k 的值,重复执行第一步。 8 */ 9 10 /*分析: 11 * 1.从键盘输入一个整数n,百度到三种方法,感觉使用scanner类比较方便,没有局限性 12 * 2.用for循环遍历除以2~n,找到第一个能除尽的值a 13 * 3.用n除以a值得到新的n 14 * 4.重复以上过程,直到n=a; 15 */ 16 17 //【注】因为最终需要得到所有a的具体值,以此想到数组,学习发现java中的数组和C中的数组声明时有区别 18 19 20 21 package homework; 22 23 import java.util.Scanner; 24 25 public class _04 { 26 27 public static void main(String[] args) { 28 29 System.out.println("请输入一个整数n:"); 30 // 从键盘得到一个整数n 31 Scanner scan=new Scanner(System.in); 32 int n=scan.nextInt(); 33 int m=n; 34 //声明一个长度为20的数组用来存放因数a的值 35 int a[]=new int[20]; 36 //声明一个数组角标 37 int j=0; 38 //遍历2~n的值,用if语句判断呢能否整除 39 for (int i=2; i<=m;) { 40 if(m%i==0) { 41 a[j]=i; 42 j++; //多加了一个 43 m=m/i; 44 } 45 else { 46 i++; 47 } 48 } 49 //输出分解后的因式 50 System.out.print(n+","+n+"="); 51 System.out.print(a[0]); 52 for (int i=1; i<=j-1; i++) { //将多加的减回来 53 System.out.print("*"+a[i]); 54 } 55 } 56 57 }
原文地址:https://www.cnblogs.com/scwyqin/p/12293031.html
时间: 2024-12-18 23:20:51