【蓝桥杯】基础练习 分解质因数 Java语言

问题描述
  求出区间[a,b]中所有整数的质因数分解。
输入格式
  输入两个整数a,b。
输出格式
  每行输出一个数的分解,
  形如k=a1a2a3…(a1<=a2<=a3…,k也是从小到大的)(具体可看样例)

样例输入
3 10
样例输出
3=34=2*25=56=2*37=78=2*2*29=3*310=2*5

提示
  先筛出所有素数,然后再分解。
数据规模和约定
  2<=a<=b<=10000

参照思路
https://blog.csdn.net/qq_41282102/article/details/88431939
写bool isprime(int n),判断一个数是不是质数
用isprime()构建从2到b的质数表prime

要点:
如何显示被同一个质数除多次
如何及早的跳出循环,减少消耗的时间(最后判断不是最后一个质因数,就输出*;否则就直接break)
输出格式的处理

结合下面的线性筛(核心思想:确保每个合数只被最小质因数筛掉)
https://blog.csdn.net/GD_ONE/article/details/104660294

使用静态数组(质数表,长度b+1)
在这里插入图片描述

然后查询到
https://www.cnblogs.com/watchfree/p/5316595.html
放到OJ试了一下
在这里插入图片描述
结合相关思想,改进代码
在这里插入图片描述

算法用的好,快乐少不了~

posted @ 2020-03-18 16:57  松鼠变河马  阅读(183)  评论(0编辑  收藏  举报