解题思路:Pollard Rho快速因数分解
将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商作为新的正整数n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
注意事项:
参考代码:
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int a =sc.nextInt();
int b =sc.nextInt();
for (int i = a; i <= b; i++) {
// f(i);
//获取i的值来进行分解
int c = i;
//默认为最小素数2
int k = 2;
System.out.print(i+"=");
while(c!=k) {
if(c%k==0&&c>k) {
System.out.print(k+"*");
c/=k;
}else {
k+=1;
}
}
System.out.println(k);
}
}
//2.新建一个方法
// private static void f(int i) {
// 默认获取最小质数
// int k = 2;
// System.out.print(i+"=");
// while(i!=k) {
// if(i%k==0&&i>k) {
// System.out.print(k+"*");
// i/=k;
// }else {
// k+=1;
// }
// }
// System.out.println(k);
// }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复