分解质因数

该博客介绍了一个程序,用于在指定区间[a, b]内计算所有整数的质因数分解。程序首先筛选出素数,然后对每个数进行质因数分解。通过判断素数和进行递归分解,输出每个数的分解形式,例如2的平方、3的三次方等。样例输入为310,输出展示了3到10的质因数分解情况。该程序适用于2<=a<=b<=10000的数据规模。
摘要由CSDN通过智能技术生成

问题描述:

求出区间[a,b]中所有整数的质因数分解。

资源限制:

时间限制:1.0s 内存限制:512.0MB

输入格式:

输入两个整数a,b。

输出格式:

每行输出一个数的分解,形如k=a1a2a3…(a1<=a2<=a3…,k也是从小到大的)(具体可看样例)

样例输入:

3 10

样例输出:

3=3
4=22
5=5
6=2
3
7=7
8=222
9=33
10=2
5

提示:

先筛出所有素数,然后再分解。

数据规模和约定:

2<=a<=b<=10000

分析:

先定义了一个用于判断是不是素数的方法,如果是素数就可以直接输出了(不定义这玩意好像也无所谓),再定义一个方法用于分解素数,思路如下:如果这个数刚好能被i整除那么打印这个数加*再将这个数除i进入下一次递归,若不是因子则使i加一进入下一次递归,若这个数等于i,则直接输出这个数不用输出乘号。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in =new Scanner(System.in);
        int f=in.nextInt();
        int e=in.nextInt();
        while (f<=e){
            if (ye(f)){
                System.out.println(f+"="+f);
            }else {
                System.out.print(f+"=");
                fj(f,2);
                System.out.println();
            }
            f++;
        }
    }
    public static boolean ye(int num){  //判断是否为素数
        boolean flag=true;
        for(int i=2;i<=Math.sqrt(num);i++){
            if (num%i==0){
                flag=false;
                break;
            }
        }
        return flag; //是素数返回true不是返回false
    }
    public static void fj(int num,int i){
        for (;i<=num;){
            if (i<num && num%i==0){
                System.out.print(i+"*");
                num=num/i;
                fj(num,i);
                break;
            }else if (i<num&&num%i!=0){
                i++;
                fj(num,i);
                break;
            }else{
                System.out.print(num);
                break;
            }
        }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值