解题思路: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 人评分
第一浏览:871 |
你的开发任务 (C++代码)写到一半,等有心情回来补全浏览:887 |
字符串的输入输出处理 (C语言代码)浏览:670 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:638 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:466 |
C语言训练-最大数问题 (C语言代码)浏览:633 |
C语言程序设计教程(第三版)课后习题9.8 (Java代码)浏览:1640 |
十->二进制转换 (C语言代码)浏览:1291 |
C语言程序设计教程(第三版)课后习题8.2 (C语言代码)浏览:5232 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:660 |