1、分解质因数、以及查找1到100之间的——Java循环
举个简单例子,12的分解质因数可以有以下几种:12=223=43=112=2*6,其中1,2,3,4,6,12都可以说是12的因数,即相乘的几个数等于一个自然数,那么这几个数就是这个自然数的因数。2,3,4中,2和3是质数,就是质因数,4不是质数。那么什么是质数呢?就是不能再拆分为除了1和它本身之外的因数的数,如2,3,5,7,9,11,13,17,19,23,29等等。
1.1 对一个数进行分解的过程:
- 先要遍历所有小于等于 num 这个的数【用for循环】:其目的是找到质数
- 在这些数中找到质数【for循环】
- 判断找到的这些质数是不是质因数【分以下情况】:
3.1:如果是,则输出分解出来的这个质数,并改变 num 的值:目的是对num 进行重新分解,知道num 为1 为止,即分解完成
3.2:如果不是:则继续找下一个质因数(也就是回到out循环中继续)
分解质因数方法一:
// 分解质因数:20
int num = 80;
while (num > 1){
// 遍历小于等于num 的所有数
out:for (int i = 2; i <= num; i++) {
// 下面的这个循环是为了判断所有小于等于 num 是不是质数
for (int j = 1; j <= i >> 1; j++) {
// 如果不是质数,则继续查找下一个质数
if (j != 1 && i % j == 0) { //这里的意思就是:除了 1 和它本身
continue out;
}
// 如果是质数,则判断它是不是质因数
if (num % i == 0) {
//输出找到的质因数:
System.out.println(i);
//
num /= i;
// 查找改变之后的 num 的质因数
break out ;
}
}
}
}
写法二:
本质上和写法一没有什么区别
while (num > 1){
// 遍历小于等于num 的所有数
out:for (int i = 2; i <= num; i++) {
// 下面的这个循环是为了判断所有小于等于 num 是不是质数
for (int j = 1; j <= i >> 1; j++) {
// 如果不是质数,则继续查找下一个质数
if (j != 1 && i % j == 0) { //这里的意思就是:除了 1 和它本身
continue out;
}
}
// 如果是质数,则判断它是不是质因数
if (num % i == 0) {
//输出找到的质因数:
System.out.println(i);
//
num /= i;
// 查找改变之后的 num 的质因数
break ;
}
}
}
2、判断质数的
只有两个正因数(1和它本身)的自然数即为质数
for (int i = 1; i <= 100; i++) {
for (int j = 1; j <= i >> 1 ; j++) {
if (j != 1 && i % j == 0) {
break;
}
if (j == i >> 1) {
System.out.println(i + "是素数");
}
}
}