目录
蓝桥杯:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
力扣263:丑数。丑数就是只包含质因数 2、3 和 5 的正整数。给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。
蓝桥杯:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤递归完成:
(1) 如果 n = k,则因数分解结束,输出结果即可;
(2) 如果 n > k 且n能被k整除,则应打印出k的值,并用n除以k的商赋值给n,重复执行第一步;
(3) 如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
import java.util.Scanner;
public class TMT4 {
public static void Factorization(int n) {
System.out.print(n + "=");
for (int k = 2; k <= n; k++) {
while (n % k == 0) { // 用while,不能用if
System.out.print(k);
n /= k;
if (n != 1) {
System.out.print("*");
}
}
}
}
public static void main(String[] args) {
int n = new Scanner(System.in).nextInt();
if (n < 2) {
System.out.print(n + "是无效的被分解数");
} else {
Factorization(n);
}
}
}
力扣263:丑数。丑数就是只包含质因数 2
、3
和 5
的正整数。给你一个整数 n
,请你判断 n
是否为丑数 。如果是,返回 true
;否则,返回 false
。
程序分析:类似于第一题的变体,思想同理。注意,如:14=2*7,包括质因数7,所以14不是丑数,返回false。
class Solution {
public boolean isUgly(int n) {
if (n < 1) {
return false;
} else if (n == 1) {
return true;
} else {
for (int k = 2; k <= 5; k++) {
while (n % k == 0) {
n /= k;
}
}
if (n > 5) {
return false;
} else {
return true;
}
}
}
}