算法训练 素因子去重
问题描述
给定一个正整数n,求一个正整数p,满足p仅包含n的所有素因子,且每个素因子的次数不大于1
输入格式
一个整数,表示n
输出格式
输出一行,包含一个整数p。
样例输入
1000
样例输出
10
数据规模和约定
n<=10^12
样例解释:n=1000=2^353,p=2*5=10
。。。。。。。。。。。。。。分割线。。。。。。。。。。。。。。。。
其实一开始觉得这道题挺简单的,因为题目很短,结果细想之后发现好像有点意思,于是就上网查了一下,果然它的解法虽然很简单,但是觉得思路很棒就顺手写下来了,大家可以参考一下
题解如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
long x =sc.nextLong();
long ans = 1;
for(int i=2;i<=x;i++) {
if(x%i==0) {
ans *= i;
}
while(x%i==0) { // 思路精彩之处在于这里
x /=i;
}
}
System.out.println(ans);
sc.close();
}
}