分解质因数
用户键盘输入一个整数,写一个程序将其分解成其质因数相乘的形式
例如:
输入:10
输出:10 = 2*5
关键代码:
public static String fenjie(int n) {
String s = "";
for(int i=2;i<=Math.sqrt(n);i++)
{
if(n % i == 0)
{
//暂时保存字符串s的值
s = s + i+"*";
n = n/i;
i--;
}
}
//不满足循环条件之后,将最后一个n加在字符串s末尾;
s= s + n;
return s;
}
例题: 蓝桥杯 分解质因数
问题描述
求出区间[a,b]中所有整数的质因数分解。
输入格式
输入两个整数a,b。
输出格式
每行输出一个数的分解,形如k=a1a2a3…(a1<=a2<=a3…,k也是从小到大的)(具体可看样例)
样例输入
3 10
样例输出
3=3
4=22
5=5
6=23
7=7
8=222
9=33
10=25
提示
先筛出所有素数,然后再分解。
数据规模和约定
2<=a<=b<=10000
java完整代码:
package lanqiaobei;
import java.awt.image.RescaleOp;
import java.util.Scanner;
public class Prime_decomposition {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner inputScanner = new Scanner(System.in);
int a = inputScanner.nextInt();
int b = inputScanner.nextInt();
Prime_Decomposition(a, b);
}
public static boolean sushu(int n) {
for(int i = 2;i<n;i++) {
if(n%i == 0) {
return false;
}
}
return true;
}
public static String fenjie(int n) {
String s = "";
for(int i=2;i<=Math.sqrt(n);i++)
{
if(n%i == 0)
{
s = s + i+"*";
n/=i;
i--;
}
}
s= s + n;
return s;
}
public static void Prime_Decomposition(int a,int b) {
for(int i = a;i<=b;i++) {
if(sushu(i) == true) {
System.out.println(i+ "="+i);
}else {
System.out.println(i+"=" + fenjie(i));
}
}
}
}
注:分步解决问题,写了两个具体函数,最后对函数进行调用。