题目描述
今天数学课上,桐桐学习了质数的知识:一个正整数如果只能被1和它本身整除,那么这个整数便是质数。桐桐就想:任意一个正整数是否都能分解成若干个质数相乘的形式呢?输入一个正整数n(2≤n≤109),把它分解成质因子相乘的形式,如果为质数则输出该数本身。如:36=2×2×3×3;19=19。你能帮助桐桐解决这个难题吗?
输入
输入一个正整数n(2≤n≤109)
输出
把它分解成质因子相乘的形式,如果为质数则输出该数本身,乘数从小到大输出。
样例输入
99
样例输出
99=3*3*11
提示
c++数学函数的预编译处理:#include<math.h>
AC代码:
import java.util.Scanner;
public class Main{
static int cnt = 0;
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int num = in.nextInt();
f(num);
}
static void f(int n){
cnt++;
for (int i = 2; i <= Math.sqrt(n); i++) {
if(n % i == 0) {
System.out.print(cnt==1 ? (n + "=" + i) : ("*" + i));
f(n/i);
return;
}
}
System.out.print(cnt==1 ? (n + "=" + n) : ("*" + n));
}
}